diff --git a/ruoyi-common/hwmom-common-mom/pom.xml b/ruoyi-common/hwmom-common-mom/pom.xml
index ca5a8a7b..61fa4011 100644
--- a/ruoyi-common/hwmom-common-mom/pom.xml
+++ b/ruoyi-common/hwmom-common-mom/pom.xml
@@ -31,6 +31,17 @@
dubbo-spring-boot-starter
provided
+
+ org.mybatis
+ mybatis
+ ${mybatis.version}
+
+
+ com.baomidou
+ mybatis-plus-core
+ 3.5.8
+ compile
+
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceCategoryController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceCategoryController.java
new file mode 100644
index 00000000..bfc1e3cd
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceCategoryController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.BaseDeviceCategoryVo;
+import org.dromara.mes.domain.bo.BaseDeviceCategoryBo;
+import org.dromara.mes.service.IBaseDeviceCategoryService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 设备大类信息
+ * 前端访问路由地址为:/mes/baseDeviceCategory
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/baseDeviceCategory")
+public class BaseDeviceCategoryController extends BaseController {
+
+ private final IBaseDeviceCategoryService baseDeviceCategoryService;
+
+ /**
+ * 查询设备大类信息列表
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BaseDeviceCategoryBo bo, PageQuery pageQuery) {
+ return baseDeviceCategoryService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出设备大类信息列表
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:export")
+ @Log(title = "设备大类信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BaseDeviceCategoryBo bo, HttpServletResponse response) {
+ List list = baseDeviceCategoryService.queryList(bo);
+ ExcelUtil.exportExcel(list, "设备大类信息", BaseDeviceCategoryVo.class, response);
+ }
+
+ /**
+ * 获取设备大类信息详细信息
+ *
+ * @param deviceCategoryId 主键
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:query")
+ @GetMapping("/{deviceCategoryId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long deviceCategoryId) {
+ return R.ok(baseDeviceCategoryService.queryById(deviceCategoryId));
+ }
+
+ /**
+ * 新增设备大类信息
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:add")
+ @Log(title = "设备大类信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BaseDeviceCategoryBo bo) {
+ return toAjax(baseDeviceCategoryService.insertByBo(bo));
+ }
+
+ /**
+ * 修改设备大类信息
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:edit")
+ @Log(title = "设备大类信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BaseDeviceCategoryBo bo) {
+ return toAjax(baseDeviceCategoryService.updateByBo(bo));
+ }
+
+ /**
+ * 删除设备大类信息
+ *
+ * @param deviceCategoryIds 主键串
+ */
+ @SaCheckPermission("mes:baseDeviceCategory:remove")
+ @Log(title = "设备大类信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{deviceCategoryIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] deviceCategoryIds) {
+ return toAjax(baseDeviceCategoryService.deleteWithValidByIds(List.of(deviceCategoryIds), true));
+ }
+
+
+ /**
+ * 下拉框查询设备大类信息列表
+ */
+
+ @GetMapping("/getBaseDeviceCategoryList")
+ public R> getBaseDeviceCategoryList(BaseDeviceCategoryBo bo) {
+ List list = baseDeviceCategoryService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceTypeController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceTypeController.java
new file mode 100644
index 00000000..d6d4c85b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseDeviceTypeController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
+import org.dromara.mes.domain.bo.BaseDeviceTypeBo;
+import org.dromara.mes.service.IBaseDeviceTypeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 设备类型信息
+ * 前端访问路由地址为:/mes/baseDeviceType
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/baseDeviceType")
+public class BaseDeviceTypeController extends BaseController {
+
+ private final IBaseDeviceTypeService baseDeviceTypeService;
+
+ /**
+ * 查询设备类型信息列表
+ */
+ @SaCheckPermission("mes:baseDeviceType:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BaseDeviceTypeBo bo, PageQuery pageQuery) {
+ return baseDeviceTypeService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出设备类型信息列表
+ */
+ @SaCheckPermission("mes:baseDeviceType:export")
+ @Log(title = "设备类型信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BaseDeviceTypeBo bo, HttpServletResponse response) {
+ List list = baseDeviceTypeService.queryList(bo);
+ ExcelUtil.exportExcel(list, "设备类型信息", BaseDeviceTypeVo.class, response);
+ }
+
+ /**
+ * 获取设备类型信息详细信息
+ *
+ * @param deviceTypeId 主键
+ */
+ @SaCheckPermission("mes:baseDeviceType:query")
+ @GetMapping("/{deviceTypeId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long deviceTypeId) {
+ return R.ok(baseDeviceTypeService.queryById(deviceTypeId));
+ }
+
+ /**
+ * 新增设备类型信息
+ */
+ @SaCheckPermission("mes:baseDeviceType:add")
+ @Log(title = "设备类型信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BaseDeviceTypeBo bo) {
+ return toAjax(baseDeviceTypeService.insertByBo(bo));
+ }
+
+ /**
+ * 修改设备类型信息
+ */
+ @SaCheckPermission("mes:baseDeviceType:edit")
+ @Log(title = "设备类型信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BaseDeviceTypeBo bo) {
+ return toAjax(baseDeviceTypeService.updateByBo(bo));
+ }
+
+ /**
+ * 删除设备类型信息
+ *
+ * @param deviceTypeIds 主键串
+ */
+ @SaCheckPermission("mes:baseDeviceType:remove")
+ @Log(title = "设备类型信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{deviceTypeIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] deviceTypeIds) {
+ return toAjax(baseDeviceTypeService.deleteWithValidByIds(List.of(deviceTypeIds), true));
+ }
+
+
+ /**
+ * 下拉框查询设备类型信息列表
+ */
+
+ @GetMapping("/getBaseDeviceTypeList")
+ public R> getBaseDeviceTypeList(BaseDeviceTypeBo bo) {
+ List list = baseDeviceTypeService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialCategoryController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialCategoryController.java
new file mode 100644
index 00000000..af38f7c1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseMaterialCategoryController.java
@@ -0,0 +1,117 @@
+package org.dromara.mes.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.mes.domain.vo.BaseMaterialCategoryVo;
+import org.dromara.mes.domain.bo.BaseMaterialCategoryBo;
+import org.dromara.mes.service.IBaseMaterialCategoryService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 物料大类信息
+ * 前端访问路由地址为:/mes/baseMaterialCategory
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/baseMaterialCategory")
+public class BaseMaterialCategoryController extends BaseController {
+
+ private final IBaseMaterialCategoryService baseMaterialCategoryService;
+
+ /**
+ * 查询物料大类信息列表
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:list")
+ @GetMapping("/list")
+ public TableDataInfo list(BaseMaterialCategoryBo bo, PageQuery pageQuery) {
+ return baseMaterialCategoryService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出物料大类信息列表
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:export")
+ @Log(title = "物料大类信息", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(BaseMaterialCategoryBo bo, HttpServletResponse response) {
+ List list = baseMaterialCategoryService.queryList(bo);
+ ExcelUtil.exportExcel(list, "物料大类信息", BaseMaterialCategoryVo.class, response);
+ }
+
+ /**
+ * 获取物料大类信息详细信息
+ *
+ * @param materialCategoryId 主键
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:query")
+ @GetMapping("/{materialCategoryId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long materialCategoryId) {
+ return R.ok(baseMaterialCategoryService.queryById(materialCategoryId));
+ }
+
+ /**
+ * 新增物料大类信息
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:add")
+ @Log(title = "物料大类信息", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody BaseMaterialCategoryBo bo) {
+ return toAjax(baseMaterialCategoryService.insertByBo(bo));
+ }
+
+ /**
+ * 修改物料大类信息
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:edit")
+ @Log(title = "物料大类信息", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody BaseMaterialCategoryBo bo) {
+ return toAjax(baseMaterialCategoryService.updateByBo(bo));
+ }
+
+ /**
+ * 删除物料大类信息
+ *
+ * @param materialCategoryIds 主键串
+ */
+ @SaCheckPermission("mes:baseMaterialCategory:remove")
+ @Log(title = "物料大类信息", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{materialCategoryIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] materialCategoryIds) {
+ return toAjax(baseMaterialCategoryService.deleteWithValidByIds(List.of(materialCategoryIds), true));
+ }
+
+
+ /**
+ * 下拉框查询物料大类信息列表
+ */
+
+ @GetMapping("/getBaseMaterialCategoryList")
+ public R> getBaseMaterialCategoryList(BaseMaterialCategoryBo bo) {
+ List list = baseMaterialCategoryService.queryList(bo);
+ return R.ok(list);
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java
index b6599b7f..4d95e093 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/BaseStructureBomController.java
@@ -2,6 +2,7 @@ package org.dromara.mes.controller;
import java.util.List;
+import cn.hutool.core.lang.tree.Tree;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
@@ -114,4 +115,16 @@ public class BaseStructureBomController extends BaseController {
List list = baseStructureBomService.queryList(bo);
return R.ok(list);
}
+
+
+
+ /**
+ * 获取部门树列表
+ */
+ @SaCheckPermission("mes:baseStructureBom:list")
+ @GetMapping("/structureBomTree")
+ public R>> structureBomTree(BaseStructureBomBo structureBomBo) {
+ return R.ok(baseStructureBomService.selectStructureBomTreeList(structureBomBo));
+ }
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceCategory.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceCategory.java
new file mode 100644
index 00000000..4a761a2b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceCategory.java
@@ -0,0 +1,51 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 设备大类信息对象 base_device_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("base_device_category")
+public class BaseDeviceCategory extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 大类ID
+ */
+ @TableId(value = "device_category_id", type = IdType.AUTO)
+ private Long deviceCategoryId;
+
+ /**
+ * 大类编号
+ */
+ private String deviceCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ private String deviceCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceType.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceType.java
new file mode 100644
index 00000000..50c1ae28
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseDeviceType.java
@@ -0,0 +1,65 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 设备类型信息对象 base_device_type
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("base_device_type")
+public class BaseDeviceType extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 物料类型ID
+ */
+ private Long deviceTypeId;
+
+ /**
+ * 父级标识
+ */
+ private Long parentId;
+
+ /**
+ * 设备类型编号
+ */
+ private String deviceTypeCode;
+
+ /**
+ * 设备类型名称
+ */
+ private String deviceTypeName;
+
+ /**
+ * 祖级列表
+ */
+ private String ancestors;
+
+ /**
+ * 设备大类ID(大类ID(关联base_category表category_type为2的))
+ */
+ private Long categoryId;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialCategory.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialCategory.java
new file mode 100644
index 00000000..5aadc031
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialCategory.java
@@ -0,0 +1,51 @@
+package org.dromara.mes.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 物料大类信息对象 base_material_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("base_material_category")
+public class BaseMaterialCategory extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 大类ID
+ */
+ @TableId(value = "material_category_id", type = IdType.AUTO)
+ private Long materialCategoryId;
+
+ /**
+ * 大类编号
+ */
+ private String materialCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ private String materialCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialType.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialType.java
index 1c92f151..1cf42d5c 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialType.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseMaterialType.java
@@ -48,9 +48,10 @@ public class BaseMaterialType extends TenantEntity {
private String ancestors;
/**
- * 物料大类(1原材料 2半成品 3成品)
+ * 物料大类ID
*/
- private String materialCategories;
+// private String materialCategories;
+ private Long materialCategoryId;
/**
* 物料小类
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java
index bd1aef12..f14942f9 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/BaseStructureBom.java
@@ -28,14 +28,14 @@ public class BaseStructureBom extends TenantEntity {
private Long structureBomId;
/**
- * 父级标识
+ * 父级标识(父级物料类型ID)
*/
private Long parentId;
/**
* 物料类型ID
*/
- private String materialTypeId;
+ private Long materialTypeId;
/**
* 物料类型名称
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceCategoryBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceCategoryBo.java
new file mode 100644
index 00000000..71507f0c
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceCategoryBo.java
@@ -0,0 +1,54 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.BaseDeviceCategory;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 设备大类信息业务对象 base_device_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BaseDeviceCategory.class, reverseConvertGenerate = false)
+public class BaseDeviceCategoryBo extends BaseEntity {
+
+ /**
+ * 大类ID
+ */
+// @NotNull(message = "大类ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deviceCategoryId;
+
+ /**
+ * 大类编号
+ */
+ @NotBlank(message = "大类编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deviceCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ @NotBlank(message = "大类名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deviceCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceTypeBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceTypeBo.java
new file mode 100644
index 00000000..81a7602b
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseDeviceTypeBo.java
@@ -0,0 +1,72 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.BaseDeviceType;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 设备类型信息业务对象 base_device_type
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BaseDeviceType.class, reverseConvertGenerate = false)
+public class BaseDeviceTypeBo extends BaseEntity {
+
+ /**
+ * 物料类型ID
+ */
+ @NotNull(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deviceTypeId;
+
+ /**
+ * 父级标识
+ */
+ @NotNull(message = "父级标识不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long parentId;
+
+ /**
+ * 设备类型编号
+ */
+ @NotBlank(message = "设备类型编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deviceTypeCode;
+
+ /**
+ * 设备类型名称
+ */
+ @NotBlank(message = "设备类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String deviceTypeName;
+
+ /**
+ * 祖级列表
+ */
+ @NotBlank(message = "祖级列表不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String ancestors;
+
+ /**
+ * 设备大类ID(大类ID(关联base_category表category_type为2的))
+ */
+ @NotNull(message = "设备大类ID(大类ID(关联base_category表category_type为2的))不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long categoryId;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialCategoryBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialCategoryBo.java
new file mode 100644
index 00000000..224dd65f
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialCategoryBo.java
@@ -0,0 +1,54 @@
+package org.dromara.mes.domain.bo;
+
+import org.dromara.mes.domain.BaseMaterialCategory;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 物料大类信息业务对象 base_material_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = BaseMaterialCategory.class, reverseConvertGenerate = false)
+public class BaseMaterialCategoryBo extends BaseEntity {
+
+ /**
+ * 大类ID
+ */
+// @NotNull(message = "大类ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long materialCategoryId;
+
+ /**
+ * 大类编号
+ */
+ @NotBlank(message = "大类编号不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String materialCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ @NotBlank(message = "大类名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String materialCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialTypeBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialTypeBo.java
index 438f20de..3faa6ebf 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialTypeBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseMaterialTypeBo.java
@@ -49,9 +49,10 @@ public class BaseMaterialTypeBo extends BaseEntity {
private String ancestors;
/**
- * 物料大类(1原材料 2半成品 3成品)
+ * 物料大类ID
*/
- private String materialCategories;
+// private String materialCategories;
+ private Long materialCategoryId;
/**
* 物料小类
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java
index 05f6e93a..6f7b3abb 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/bo/BaseStructureBomBo.java
@@ -26,7 +26,7 @@ public class BaseStructureBomBo extends BaseEntity {
private Long structureBomId;
/**
- * 父级标识
+ * 父级物料类型ID
*/
private Long parentId;
@@ -34,7 +34,7 @@ public class BaseStructureBomBo extends BaseEntity {
* 物料类型ID
*/
@NotBlank(message = "物料类型ID不能为空", groups = { AddGroup.class, EditGroup.class })
- private String materialTypeId;
+ private Long materialTypeId;
/**
* 物料类型名称
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceCategoryVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceCategoryVo.java
new file mode 100644
index 00000000..a8cb88b1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceCategoryVo.java
@@ -0,0 +1,63 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.BaseDeviceCategory;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 设备大类信息视图对象 base_device_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BaseDeviceCategory.class)
+public class BaseDeviceCategoryVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 大类ID
+ */
+ @ExcelProperty(value = "大类ID")
+ private Long deviceCategoryId;
+
+ /**
+ * 大类编号
+ */
+ @ExcelProperty(value = "大类编号")
+ private String deviceCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ @ExcelProperty(value = "大类名称")
+ private String deviceCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=是,0=否")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceTypeVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceTypeVo.java
new file mode 100644
index 00000000..95d8b227
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseDeviceTypeVo.java
@@ -0,0 +1,82 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.BaseDeviceType;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 设备类型信息视图对象 base_device_type
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BaseDeviceType.class)
+public class BaseDeviceTypeVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 物料类型ID
+ */
+ @ExcelProperty(value = "物料类型ID")
+ private Long deviceTypeId;
+
+ /**
+ * 父级标识
+ */
+ @ExcelProperty(value = "父级标识")
+ private Long parentId;
+
+ /**
+ * 设备类型编号
+ */
+ @ExcelProperty(value = "设备类型编号")
+ private String deviceTypeCode;
+
+ /**
+ * 设备类型名称
+ */
+ @ExcelProperty(value = "设备类型名称")
+ private String deviceTypeName;
+
+ /**
+ * 祖级列表
+ */
+ @ExcelProperty(value = "祖级列表")
+ private String ancestors;
+
+ /**
+ * 设备大类ID(大类ID(关联base_category表category_type为2的))
+ */
+ @ExcelProperty(value = "设备大类ID", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "大=类ID(关联base_category表category_type为2的")
+ private Long categoryId;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=是,0=否")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialCategoryVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialCategoryVo.java
new file mode 100644
index 00000000..939fd2a7
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialCategoryVo.java
@@ -0,0 +1,63 @@
+package org.dromara.mes.domain.vo;
+
+import org.dromara.mes.domain.BaseMaterialCategory;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 物料大类信息视图对象 base_material_category
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = BaseMaterialCategory.class)
+public class BaseMaterialCategoryVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 大类ID
+ */
+ @ExcelProperty(value = "大类ID")
+ private Long materialCategoryId;
+
+ /**
+ * 大类编号
+ */
+ @ExcelProperty(value = "大类编号")
+ private String materialCategoryCode;
+
+ /**
+ * 大类名称
+ */
+ @ExcelProperty(value = "大类名称")
+ private String materialCategoryName;
+
+ /**
+ * 激活标识(1是 0否)
+ */
+ @ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "1=是,0=否")
+ private String activeFlag;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
index bcd97d3f..20bf198a 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseMaterialTypeVo.java
@@ -65,11 +65,12 @@ public class BaseMaterialTypeVo implements Serializable {
private String ancestors;
/**
- * 物料大类(1原材料 2半成品 3成品)
+ * 物料大类ID
*/
- @ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class)
- @ExcelDictFormat(dictType = "mes_material_categories")
- private String materialCategories;
+// @ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class)
+// @ExcelDictFormat(dictType = "mes_material_categories")
+ private Long materialCategoryId;
+// private String materialCategories;
/**
* 物料小类
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java
index 1e09b3e7..0cb8862b 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/BaseStructureBomVo.java
@@ -50,7 +50,7 @@ public class BaseStructureBomVo implements Serializable {
* 物料类型ID
*/
@ExcelProperty(value = "物料类型ID")
- private String materialTypeId;
+ private Long materialTypeId;
/**
* 物料类型名称
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceCategoryMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceCategoryMapper.java
new file mode 100644
index 00000000..b6e352ae
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceCategoryMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.BaseDeviceCategory;
+import org.dromara.mes.domain.vo.BaseDeviceCategoryVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 设备大类信息Mapper接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface BaseDeviceCategoryMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceTypeMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceTypeMapper.java
new file mode 100644
index 00000000..9ba0ca46
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseDeviceTypeMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.BaseDeviceType;
+import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 设备类型信息Mapper接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface BaseDeviceTypeMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseMaterialCategoryMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseMaterialCategoryMapper.java
new file mode 100644
index 00000000..63eff0e1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseMaterialCategoryMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.mes.mapper;
+
+import org.dromara.mes.domain.BaseMaterialCategory;
+import org.dromara.mes.domain.vo.BaseMaterialCategoryVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 物料大类信息Mapper接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface BaseMaterialCategoryMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java
index 2cc70760..cedb4a14 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/BaseStructureBomMapper.java
@@ -1,9 +1,16 @@
package org.dromara.mes.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.common.mybatis.annotation.DataColumn;
+import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.mes.domain.BaseStructureBom;
import org.dromara.mes.domain.vo.BaseStructureBomVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import java.util.List;
+
/**
* 结构BOM信息Mapper接口
*
@@ -12,4 +19,15 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface BaseStructureBomMapper extends BaseMapperPlus {
+ /**
+ * 查询bom结构管理数据
+ *
+ * @param queryWrapper 查询条件
+ * @return 部门信息集合
+ */
+ @DataPermission({
+ @DataColumn(key = "deptName", value = "dept_id")
+ })
+ List selectStructureBomList(@Param(Constants.WRAPPER) Wrapper queryWrapper);
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceCategoryService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceCategoryService.java
new file mode 100644
index 00000000..ec7944a6
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceCategoryService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.BaseDeviceCategory;
+import org.dromara.mes.domain.vo.BaseDeviceCategoryVo;
+import org.dromara.mes.domain.bo.BaseDeviceCategoryBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 设备大类信息Service接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface IBaseDeviceCategoryService {
+
+ /**
+ * 查询设备大类信息
+ *
+ * @param deviceCategoryId 主键
+ * @return 设备大类信息
+ */
+ BaseDeviceCategoryVo queryById(Long deviceCategoryId);
+
+ /**
+ * 分页查询设备大类信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 设备大类信息分页列表
+ */
+ TableDataInfo queryPageList(BaseDeviceCategoryBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的设备大类信息列表
+ *
+ * @param bo 查询条件
+ * @return 设备大类信息列表
+ */
+ List queryList(BaseDeviceCategoryBo bo);
+
+ /**
+ * 新增设备大类信息
+ *
+ * @param bo 设备大类信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BaseDeviceCategoryBo bo);
+
+ /**
+ * 修改设备大类信息
+ *
+ * @param bo 设备大类信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BaseDeviceCategoryBo bo);
+
+ /**
+ * 校验并批量删除设备大类信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceTypeService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceTypeService.java
new file mode 100644
index 00000000..d211705d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseDeviceTypeService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.BaseDeviceType;
+import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
+import org.dromara.mes.domain.bo.BaseDeviceTypeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 设备类型信息Service接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface IBaseDeviceTypeService {
+
+ /**
+ * 查询设备类型信息
+ *
+ * @param deviceTypeId 主键
+ * @return 设备类型信息
+ */
+ BaseDeviceTypeVo queryById(Long deviceTypeId);
+
+ /**
+ * 分页查询设备类型信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 设备类型信息分页列表
+ */
+ TableDataInfo queryPageList(BaseDeviceTypeBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的设备类型信息列表
+ *
+ * @param bo 查询条件
+ * @return 设备类型信息列表
+ */
+ List queryList(BaseDeviceTypeBo bo);
+
+ /**
+ * 新增设备类型信息
+ *
+ * @param bo 设备类型信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BaseDeviceTypeBo bo);
+
+ /**
+ * 修改设备类型信息
+ *
+ * @param bo 设备类型信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BaseDeviceTypeBo bo);
+
+ /**
+ * 校验并批量删除设备类型信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseMaterialCategoryService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseMaterialCategoryService.java
new file mode 100644
index 00000000..bc4011e2
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseMaterialCategoryService.java
@@ -0,0 +1,69 @@
+package org.dromara.mes.service;
+
+import org.dromara.mes.domain.BaseMaterialCategory;
+import org.dromara.mes.domain.vo.BaseMaterialCategoryVo;
+import org.dromara.mes.domain.bo.BaseMaterialCategoryBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 物料大类信息Service接口
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+public interface IBaseMaterialCategoryService {
+
+ /**
+ * 查询物料大类信息
+ *
+ * @param materialCategoryId 主键
+ * @return 物料大类信息
+ */
+ BaseMaterialCategoryVo queryById(Long materialCategoryId);
+
+ /**
+ * 分页查询物料大类信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 物料大类信息分页列表
+ */
+ TableDataInfo queryPageList(BaseMaterialCategoryBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的物料大类信息列表
+ *
+ * @param bo 查询条件
+ * @return 物料大类信息列表
+ */
+ List queryList(BaseMaterialCategoryBo bo);
+
+ /**
+ * 新增物料大类信息
+ *
+ * @param bo 物料大类信息
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(BaseMaterialCategoryBo bo);
+
+ /**
+ * 修改物料大类信息
+ *
+ * @param bo 物料大类信息
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(BaseMaterialCategoryBo bo);
+
+ /**
+ * 校验并批量删除物料大类信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java
index d65a7d1b..e23b29b7 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/IBaseStructureBomService.java
@@ -1,5 +1,6 @@
package org.dromara.mes.service;
+import cn.hutool.core.lang.tree.Tree;
import org.dromara.mes.domain.BaseStructureBom;
import org.dromara.mes.domain.vo.BaseStructureBomVo;
import org.dromara.mes.domain.bo.BaseStructureBomBo;
@@ -56,4 +57,21 @@ public interface IBaseStructureBomService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
+ /**
+ * 查询bom结构树结构信息
+ *
+ * @param bo 物料结构树信息
+ * @return 物料结构树信息集合
+ */
+ public List> selectStructureBomTreeList(BaseStructureBomBo bo);
+
+ /**
+ * 构建前端所需要下拉树结构
+ *
+ * @param structureBomVos 物料结构bom列表
+ * @return 下拉树结构列表
+ */
+ public List> buildStructureBomTreeSelect(List structureBomVos);
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceCategoryServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceCategoryServiceImpl.java
new file mode 100644
index 00000000..89a91e3d
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceCategoryServiceImpl.java
@@ -0,0 +1,135 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.BaseDeviceCategoryBo;
+import org.dromara.mes.domain.vo.BaseDeviceCategoryVo;
+import org.dromara.mes.domain.BaseDeviceCategory;
+import org.dromara.mes.mapper.BaseDeviceCategoryMapper;
+import org.dromara.mes.service.IBaseDeviceCategoryService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 设备大类信息Service业务层处理
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BaseDeviceCategoryServiceImpl implements IBaseDeviceCategoryService {
+
+ private final BaseDeviceCategoryMapper baseMapper;
+
+ /**
+ * 查询设备大类信息
+ *
+ * @param deviceCategoryId 主键
+ * @return 设备大类信息
+ */
+ @Override
+ public BaseDeviceCategoryVo queryById(Long deviceCategoryId){
+ return baseMapper.selectVoById(deviceCategoryId);
+ }
+
+ /**
+ * 分页查询设备大类信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 设备大类信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BaseDeviceCategoryBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的设备大类信息列表
+ *
+ * @param bo 查询条件
+ * @return 设备大类信息列表
+ */
+ @Override
+ public List queryList(BaseDeviceCategoryBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(BaseDeviceCategoryBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseDeviceCategory.class)
+ .selectAll(BaseDeviceCategory.class)
+ .eq(bo.getDeviceCategoryId() != null, BaseDeviceCategory::getDeviceCategoryId, bo.getDeviceCategoryId())
+ .eq(StringUtils.isNotBlank(bo.getDeviceCategoryCode()), BaseDeviceCategory::getDeviceCategoryCode, bo.getDeviceCategoryCode())
+ .like(StringUtils.isNotBlank(bo.getDeviceCategoryName()), BaseDeviceCategory::getDeviceCategoryName, bo.getDeviceCategoryName())
+ .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseDeviceCategory::getActiveFlag, bo.getActiveFlag())
+ .orderByDesc(BaseDeviceCategory::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增设备大类信息
+ *
+ * @param bo 设备大类信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BaseDeviceCategoryBo bo) {
+ BaseDeviceCategory add = MapstructUtils.convert(bo, BaseDeviceCategory.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setDeviceCategoryId(add.getDeviceCategoryId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改设备大类信息
+ *
+ * @param bo 设备大类信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BaseDeviceCategoryBo bo) {
+ BaseDeviceCategory update = MapstructUtils.convert(bo, BaseDeviceCategory.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BaseDeviceCategory entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除设备大类信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceTypeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceTypeServiceImpl.java
new file mode 100644
index 00000000..051a1e66
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseDeviceTypeServiceImpl.java
@@ -0,0 +1,138 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.BaseDeviceTypeBo;
+import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
+import org.dromara.mes.domain.BaseDeviceType;
+import org.dromara.mes.mapper.BaseDeviceTypeMapper;
+import org.dromara.mes.service.IBaseDeviceTypeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 设备类型信息Service业务层处理
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BaseDeviceTypeServiceImpl implements IBaseDeviceTypeService {
+
+ private final BaseDeviceTypeMapper baseMapper;
+
+ /**
+ * 查询设备类型信息
+ *
+ * @param deviceTypeId 主键
+ * @return 设备类型信息
+ */
+ @Override
+ public BaseDeviceTypeVo queryById(Long deviceTypeId){
+ return baseMapper.selectVoById(deviceTypeId);
+ }
+
+ /**
+ * 分页查询设备类型信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 设备类型信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BaseDeviceTypeBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的设备类型信息列表
+ *
+ * @param bo 查询条件
+ * @return 设备类型信息列表
+ */
+ @Override
+ public List queryList(BaseDeviceTypeBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(BaseDeviceTypeBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseDeviceType.class)
+ .selectAll(BaseDeviceType.class)
+ .eq(bo.getDeviceTypeId() != null, BaseDeviceType::getDeviceTypeId, bo.getDeviceTypeId())
+ .eq(bo.getParentId() != null, BaseDeviceType::getParentId, bo.getParentId())
+ .eq(StringUtils.isNotBlank(bo.getDeviceTypeCode()), BaseDeviceType::getDeviceTypeCode, bo.getDeviceTypeCode())
+ .like(StringUtils.isNotBlank(bo.getDeviceTypeName()), BaseDeviceType::getDeviceTypeName, bo.getDeviceTypeName())
+ .eq(StringUtils.isNotBlank(bo.getAncestors()), BaseDeviceType::getAncestors, bo.getAncestors())
+ .eq(bo.getCategoryId() != null, BaseDeviceType::getCategoryId, bo.getCategoryId())
+ .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseDeviceType::getActiveFlag, bo.getActiveFlag())
+ .orderByDesc(BaseDeviceType::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增设备类型信息
+ *
+ * @param bo 设备类型信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BaseDeviceTypeBo bo) {
+ BaseDeviceType add = MapstructUtils.convert(bo, BaseDeviceType.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setDeviceTypeId(add.getDeviceTypeId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改设备类型信息
+ *
+ * @param bo 设备类型信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BaseDeviceTypeBo bo) {
+ BaseDeviceType update = MapstructUtils.convert(bo, BaseDeviceType.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BaseDeviceType entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除设备类型信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialCategoryServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialCategoryServiceImpl.java
new file mode 100644
index 00000000..2db262a5
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialCategoryServiceImpl.java
@@ -0,0 +1,135 @@
+package org.dromara.mes.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.mes.domain.bo.BaseMaterialCategoryBo;
+import org.dromara.mes.domain.vo.BaseMaterialCategoryVo;
+import org.dromara.mes.domain.BaseMaterialCategory;
+import org.dromara.mes.mapper.BaseMaterialCategoryMapper;
+import org.dromara.mes.service.IBaseMaterialCategoryService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 物料大类信息Service业务层处理
+ *
+ * @author xins
+ * @date 2025-02-21
+ */
+@RequiredArgsConstructor
+@Service
+public class BaseMaterialCategoryServiceImpl implements IBaseMaterialCategoryService {
+
+ private final BaseMaterialCategoryMapper baseMapper;
+
+ /**
+ * 查询物料大类信息
+ *
+ * @param materialCategoryId 主键
+ * @return 物料大类信息
+ */
+ @Override
+ public BaseMaterialCategoryVo queryById(Long materialCategoryId){
+ return baseMapper.selectVoById(materialCategoryId);
+ }
+
+ /**
+ * 分页查询物料大类信息列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 物料大类信息分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(BaseMaterialCategoryBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的物料大类信息列表
+ *
+ * @param bo 查询条件
+ * @return 物料大类信息列表
+ */
+ @Override
+ public List queryList(BaseMaterialCategoryBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(BaseMaterialCategoryBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(BaseMaterialCategory.class)
+ .selectAll(BaseMaterialCategory.class)
+ .eq(bo.getMaterialCategoryId() != null, BaseMaterialCategory::getMaterialCategoryId, bo.getMaterialCategoryId())
+ .eq(StringUtils.isNotBlank(bo.getMaterialCategoryCode()), BaseMaterialCategory::getMaterialCategoryCode, bo.getMaterialCategoryCode())
+ .like(StringUtils.isNotBlank(bo.getMaterialCategoryName()), BaseMaterialCategory::getMaterialCategoryName, bo.getMaterialCategoryName())
+ .eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialCategory::getActiveFlag, bo.getActiveFlag())
+ .orderByDesc(BaseMaterialCategory::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增物料大类信息
+ *
+ * @param bo 物料大类信息
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(BaseMaterialCategoryBo bo) {
+ BaseMaterialCategory add = MapstructUtils.convert(bo, BaseMaterialCategory.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setMaterialCategoryId(add.getMaterialCategoryId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改物料大类信息
+ *
+ * @param bo 物料大类信息
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(BaseMaterialCategoryBo bo) {
+ BaseMaterialCategory update = MapstructUtils.convert(bo, BaseMaterialCategory.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(BaseMaterialCategory entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除物料大类信息信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
index 7ac3ae54..022debdb 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseMaterialTypeServiceImpl.java
@@ -70,7 +70,7 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
.eq(StringUtils.isNotBlank(bo.getMatrialTypeCode()), BaseMaterialType::getMatrialTypeCode, bo.getMatrialTypeCode())
.like(StringUtils.isNotBlank(bo.getMatrialTypeName()), BaseMaterialType::getMatrialTypeName, bo.getMatrialTypeName())
.eq(StringUtils.isNotBlank(bo.getAncestors()), BaseMaterialType::getAncestors, bo.getAncestors())
- .eq(StringUtils.isNotBlank(bo.getMaterialCategories()), BaseMaterialType::getMaterialCategories, bo.getMaterialCategories())
+ .eq(bo.getMaterialCategoryId()!=null, BaseMaterialType::getMaterialCategoryId, bo.getMaterialCategoryId())
.eq(StringUtils.isNotBlank(bo.getMaterialSubclass()), BaseMaterialType::getMaterialSubclass, bo.getMaterialSubclass())
.eq(bo.getProcessId() != null, BaseMaterialType::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialType::getActiveFlag, bo.getActiveFlag())
diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java
index 9ed72ad7..994e80ba 100644
--- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java
+++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/service/impl/BaseStructureBomServiceImpl.java
@@ -1,6 +1,10 @@
package org.dromara.mes.service.impl;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.tree.Tree;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.ObjectUtils;
+import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -8,6 +12,7 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.utils.TreeBuildUtils;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.BaseStructureBomBo;
import org.dromara.mes.domain.vo.BaseStructureBomVo;
@@ -61,7 +66,7 @@ public class BaseStructureBomServiceImpl implements IBaseStructureBomService {
.selectAll(BaseStructureBom.class)
.eq(bo.getStructureBomId() != null, BaseStructureBom::getStructureBomId, bo.getStructureBomId())
.eq(bo.getParentId() != null, BaseStructureBom::getParentId, bo.getParentId())
- .eq(StringUtils.isNotBlank(bo.getMaterialTypeId()), BaseStructureBom::getMaterialTypeId, bo.getMaterialTypeId())
+ .eq(bo.getMaterialTypeId()!=null, BaseStructureBom::getMaterialTypeId, bo.getMaterialTypeId())
.like(StringUtils.isNotBlank(bo.getMaterialTypeName()), BaseStructureBom::getMaterialTypeName, bo.getMaterialTypeName())
.eq(StringUtils.isNotBlank(bo.getStructureBomDesc()), BaseStructureBom::getStructureBomDesc, bo.getStructureBomDesc())
.eq(StringUtils.isNotBlank(bo.getStructureBomVersion()), BaseStructureBom::getStructureBomVersion, bo.getStructureBomVersion())
@@ -143,4 +148,43 @@ public class BaseStructureBomServiceImpl implements IBaseStructureBomService {
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+
+
+
+
+ /**
+ * 查询bom结构树结构信息
+ *
+ * @param bo 物料结构树信息
+ * @return 物料结构树信息集合
+ */
+ @Override
+ public List> selectStructureBomTreeList(BaseStructureBomBo bo) {
+// bo.setStatus(UserConstants.DEPT_NORMAL);
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ List structureBomVos = baseMapper.selectVoList(lqw);
+ return buildStructureBomTreeSelect(structureBomVos);
+ }
+
+
+ /**
+ * 构建前端所需要下拉树结构
+ *
+ * @param structureBomVos 物料结构bom列表
+ * @return 下拉树结构列表
+ */
+ @Override
+ public List> buildStructureBomTreeSelect(List structureBomVos) {
+ if (CollUtil.isEmpty(structureBomVos)) {
+ return CollUtil.newArrayList();
+ }
+ return TreeBuildUtils.build(structureBomVos, (structureBom, tree) ->
+ tree.setId(structureBom.getMaterialTypeId())
+ .setParentId(structureBom.getParentId())
+ .setName(structureBom.getMaterialTypeName())
+ );
+ }
+
+
}
diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceCategoryMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceCategoryMapper.xml
new file mode 100644
index 00000000..14a97c7f
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceCategoryMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceTypeMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceTypeMapper.xml
new file mode 100644
index 00000000..4b6f7ca1
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseDeviceTypeMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseMaterialCategoryMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseMaterialCategoryMapper.xml
new file mode 100644
index 00000000..d26ac2ab
--- /dev/null
+++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/BaseMaterialCategoryMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+