diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/mapper/BomMapper.java b/mes-module-system/src/main/java/top/mes/admin/bom/mapper/BomMapper.java new file mode 100644 index 0000000..16304cf --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/mapper/BomMapper.java @@ -0,0 +1,16 @@ +package top.mes.admin.bom.mapper; + +import top.continew.starter.data.mp.base.BaseMapper; +import top.mes.admin.bom.model.entity.BomDO; +import org.springframework.stereotype.Repository; + +/** +* BOM物料清单(单) Mapper +* +* @author zc +* @since 2026/06/23 17:28 +*/ +@Repository +public interface BomMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/model/entity/BomDO.java b/mes-module-system/src/main/java/top/mes/admin/bom/model/entity/BomDO.java new file mode 100644 index 0000000..04dd509 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/model/entity/BomDO.java @@ -0,0 +1,43 @@ +package top.mes.admin.bom.model.entity; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.TableName; + +import top.mes.admin.common.model.entity.BaseDO; + +import java.io.Serial; + +/** + * BOM物料清单(单)实体 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Data +@TableName("sys_bom") +public class BomDO extends BaseDO { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + private String bomCode; + + /** + * 名称 + */ + private String bomName; + + /** + * 类型:0:成品 1:半成品 + */ + private Integer bomType; + + /** + * 说明 + */ + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/model/query/BomQuery.java b/mes-module-system/src/main/java/top/mes/admin/bom/model/query/BomQuery.java new file mode 100644 index 0000000..9212ee7 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/model/query/BomQuery.java @@ -0,0 +1,54 @@ +package top.mes.admin.bom.model.query; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.continew.starter.data.core.annotation.Query; +import top.continew.starter.data.core.enums.QueryType; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; + +/** + * BOM物料清单(单)查询条件 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Data +@Schema(description = "BOM物料清单(单)查询条件") +public class BomQuery implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Schema(description = "编号") + @Query(type = QueryType.EQ) + private String bomCode; + + /** + * 名称 + */ + @Schema(description = "名称") + @Query(type = QueryType.EQ) + private String bomName; + + /** + * 类型:0:成品 1:半成品 + */ + @Schema(description = "类型:0:成品 1:半成品") + @Query(type = QueryType.EQ) + private Integer bomType; + + /** + * + */ + @Schema(description = "") + @Query(type = QueryType.EQ) + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/model/req/BomReq.java b/mes-module-system/src/main/java/top/mes/admin/bom/model/req/BomReq.java new file mode 100644 index 0000000..47ed217 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/model/req/BomReq.java @@ -0,0 +1,57 @@ +package top.mes.admin.bom.model.req; + +import jakarta.validation.constraints.*; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import org.hibernate.validator.constraints.Length; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; + +/** + * 创建或修改BOM物料清单(单)参数 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Data +@Schema(description = "创建或修改BOM物料清单(单)参数") +public class BomReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Schema(description = "编号") + @NotBlank(message = "编号不能为空") + @Length(max = 32, message = "编号长度不能超过 {max} 个字符") + private String bomCode; + + /** + * 名称 + */ + @Schema(description = "名称") + @NotBlank(message = "名称不能为空") + @Length(max = 100, message = "名称长度不能超过 {max} 个字符") + private String bomName; + + /** + * 类型:0:成品 1:半成品 + */ + @Schema(description = "类型:0:成品 1:半成品") + @NotNull(message = "类型:0:成品 1:半成品不能为空") + private Integer bomType; + + /** + * 说明 + */ + @Schema(description = "说明") + @Length(max = 255, message = "说明长度不能超过 {max} 个字符") + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomDetailResp.java b/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomDetailResp.java new file mode 100644 index 0000000..5b85801 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomDetailResp.java @@ -0,0 +1,56 @@ +package top.mes.admin.bom.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; + +/** + * BOM物料清单(单)详情信息 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Data +@ExcelIgnoreUnannotated +@Schema(description = "BOM物料清单(单)详情信息") +public class BomDetailResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Schema(description = "编号") + @ExcelProperty(value = "编号") + private String bomCode; + + /** + * 名称 + */ + @Schema(description = "名称") + @ExcelProperty(value = "名称") + private String bomName; + + /** + * 类型:0:成品 1:半成品 + */ + @Schema(description = "类型:0:成品 1:半成品") + @ExcelProperty(value = "类型:0:成品 1:半成品") + private Integer bomType; + + /** + * 说明 + */ + @Schema(description = "说明") + @ExcelProperty(value = "说明") + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomResp.java b/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomResp.java new file mode 100644 index 0000000..29fa0fa --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/model/resp/BomResp.java @@ -0,0 +1,60 @@ +package top.mes.admin.bom.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; + +/** + * BOM物料清单(单)信息 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Data +@Schema(description = "BOM物料清单(单)信息") +public class BomResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Schema(description = "编号") + private String bomCode; + + /** + * 名称 + */ + @Schema(description = "名称") + private String bomName; + + /** + * 类型:0:成品 1:半成品 + */ + @Schema(description = "类型:0:成品 1:半成品") + private String bomType; + + /** + * 说明 + */ + @Schema(description = "说明") + private String remark; + + /** + * + */ + @Schema(description = "") + private Long updateUser; + + /** + * + */ + @Schema(description = "") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/service/BomService.java b/mes-module-system/src/main/java/top/mes/admin/bom/service/BomService.java new file mode 100644 index 0000000..a1e1c91 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/service/BomService.java @@ -0,0 +1,17 @@ +package top.mes.admin.bom.service; + +import top.continew.starter.extension.crud.service.BaseService; +import top.mes.admin.bom.model.query.BomQuery; +import top.mes.admin.bom.model.req.BomReq; +import top.mes.admin.bom.model.resp.BomDetailResp; +import top.mes.admin.bom.model.resp.BomResp; + +/** + * BOM物料清单(单)业务接口 + * + * @author zc + * @since 2026/06/23 17:28 + */ +public interface BomService extends BaseService { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/bom/service/impl/BomServiceImpl.java b/mes-module-system/src/main/java/top/mes/admin/bom/service/impl/BomServiceImpl.java new file mode 100644 index 0000000..e5d54ab --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/bom/service/impl/BomServiceImpl.java @@ -0,0 +1,26 @@ +package top.mes.admin.bom.service.impl; + +import lombok.RequiredArgsConstructor; + +import org.springframework.stereotype.Service; + +import top.continew.starter.extension.crud.service.BaseServiceImpl; +import top.mes.admin.bom.mapper.BomMapper; +import top.mes.admin.bom.model.entity.BomDO; +import top.mes.admin.bom.model.query.BomQuery; +import top.mes.admin.bom.model.req.BomReq; +import top.mes.admin.bom.model.resp.BomDetailResp; +import top.mes.admin.bom.model.resp.BomResp; +import top.mes.admin.bom.service.BomService; + +/** + * BOM物料清单(单)业务实现 + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Service +@RequiredArgsConstructor +public class BomServiceImpl extends BaseServiceImpl implements BomService { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/mapper/ProcessMapper.java b/mes-module-system/src/main/java/top/mes/admin/process/mapper/ProcessMapper.java new file mode 100644 index 0000000..4dfdfc1 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/mapper/ProcessMapper.java @@ -0,0 +1,16 @@ +package top.mes.admin.process.mapper; + +import top.continew.starter.data.mp.base.BaseMapper; +import top.mes.admin.process.model.entity.ProcessDO; +import org.springframework.stereotype.Repository; + +/** +* 工序基础信息 Mapper +* +* @author zc +* @since 2026/06/18 15:48 +*/ +@Repository +public interface ProcessMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/model/entity/ProcessDO.java b/mes-module-system/src/main/java/top/mes/admin/process/model/entity/ProcessDO.java new file mode 100644 index 0000000..a33c2d2 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/model/entity/ProcessDO.java @@ -0,0 +1,159 @@ +package top.mes.admin.process.model.entity; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.TableName; + +import top.mes.admin.common.model.entity.BaseDO; + +import java.io.Serial; +import java.math.BigDecimal; + +/** + * 工序基础信息实体 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Data +@TableName("sys_process") +public class ProcessDO extends BaseDO { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序编号(唯一) + */ + private String processCode; + + /** + * 工序名称 + */ + private String processName; + + /** + * 工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序 + */ + private Integer processType; + + /** + * 工序分类(如:SMT、组装、测试) + */ + private String processCategory; + + /** + * 是否关键工序:0-否 1-是 + */ + private Integer isKeyProcess; + + /** + * 是否特殊工序:0-否 1-是 + */ + private Integer isSpecialProcess; + + /** + * 是否质量门禁:0-否 1-是(必须检验合格才能流转) + */ + private Integer isQualityGate; + + /** + * 标准工时(分钟/件) + */ + private Integer standardDurationMinutes; + + /** + * 换型/准备时间(分钟) + */ + private Integer setupDurationMinutes; + + /** + * 等待时间(分钟) + */ + private Integer waitingDurationMinutes; + + /** + * 搬运时间(分钟) + */ + private Integer moveDurationMinutes; + + /** + * 默认工作中心/设备组 + */ + private String defaultWorkCenter; + + /** + * 所需技能等级:1-初级 2-中级 3-高级 4-专家 + */ + private Integer requiredSkillLevel; + + /** + * 最少操作人数 + */ + private Integer minOperatorCount; + + /** + * 工序参数模板 + */ + private String parameterTemplate; + + /** + * 是否需要质量检验:0-否 1-是 + */ + private Integer qualityCheckRequired; + + /** + * 默认抽检比例(%) + */ + private BigDecimal defaultCheckRate; + + /** + * 允许不良率(%) + */ + private BigDecimal allowableDefectRate; + + /** + * 是否需要领料:0-否 1-是 + */ + private Integer needMaterial; + + /** + * 发料方式:1-按单发料 2-按工序发料 3-按线边仓发料 + */ + private Integer materialIssueMethod; + + /** + * 状态:1-启用 0-停用 2-草稿 3-已废弃 + */ + private Integer status; + + /** + * 版本号(修改自动+1) + */ + private Integer version; + + /** + * 排序号 + */ + private Integer sortOrder; + + /** + * SOP文件URL + */ + private String sopUrl; + + /** + * 操作视频URL + */ + private String videoUrl; + + /** + * 备注 + */ + private String remark; + + /** + * 附件ID列表(逗号分隔) + */ + private String attachmentIds; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/model/query/ProcessQuery.java b/mes-module-system/src/main/java/top/mes/admin/process/model/query/ProcessQuery.java new file mode 100644 index 0000000..f2ba3d9 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/model/query/ProcessQuery.java @@ -0,0 +1,104 @@ +package top.mes.admin.process.model.query; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.continew.starter.data.core.annotation.Query; +import top.continew.starter.data.core.enums.QueryType; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; +import java.math.BigDecimal; + +/** + * 工序基础信息查询条件 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Data +@Schema(description = "工序基础信息查询条件") +public class ProcessQuery implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序编号(唯一) + */ + @Schema(description = "工序编号(唯一)") + @Query(type = QueryType.EQ) + private String processCode; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + @Query(type = QueryType.EQ) + private String processName; + + /** + * 工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序 + */ + @Schema(description = "工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序") + @Query(type = QueryType.EQ) + private Integer processType; + + /** + * 是否关键工序:0-否 1-是 + */ + @Schema(description = "是否关键工序:0-否 1-是") + @Query(type = QueryType.EQ) + private Integer isKeyProcess; + + /** + * 是否特殊工序:0-否 1-是 + */ + @Schema(description = "是否特殊工序:0-否 1-是") + @Query(type = QueryType.EQ) + private Integer isSpecialProcess; + + /** + * 是否质量门禁:0-否 1-是(必须检验合格才能流转) + */ + @Schema(description = "是否质量门禁:0-否 1-是(必须检验合格才能流转)") + @Query(type = QueryType.EQ) + private Integer isQualityGate; + + /** + * 是否需要质量检验:0-否 1-是 + */ + @Schema(description = "是否需要质量检验:0-否 1-是") + @Query(type = QueryType.EQ) + private Integer qualityCheckRequired; + + /** + * 是否需要领料:0-否 1-是 + */ + @Schema(description = "是否需要领料:0-否 1-是") + @Query(type = QueryType.EQ) + private Integer needMaterial; + + /** + * 状态:1-启用 0-停用 2-草稿 3-已废弃 + */ + @Schema(description = "状态:1-启用 0-停用 2-草稿 3-已废弃") + @Query(type = QueryType.EQ) + private Integer status; + + /** + * 版本号(修改自动+1) + */ + @Schema(description = "版本号(修改自动+1)") + @Query(type = QueryType.EQ) + private Integer version; + + /** + * 创建时间 + */ + @Schema(description = "创建时间") + @Query(type = QueryType.EQ) + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/model/req/ProcessReq.java b/mes-module-system/src/main/java/top/mes/admin/process/model/req/ProcessReq.java new file mode 100644 index 0000000..f47a7d4 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/model/req/ProcessReq.java @@ -0,0 +1,207 @@ +package top.mes.admin.process.model.req; + +import jakarta.validation.constraints.*; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import org.hibernate.validator.constraints.Length; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; +import java.math.BigDecimal; + +/** + * 创建或修改工序基础信息参数 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Data +@Schema(description = "创建或修改工序基础信息参数") +public class ProcessReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序编号(唯一) + */ + @Schema(description = "工序编号(唯一)") + @NotBlank(message = "工序编号(唯一)不能为空") + @Length(max = 32, message = "工序编号(唯一)长度不能超过 {max} 个字符") + private String processCode; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + @NotBlank(message = "工序名称不能为空") + @Length(max = 64, message = "工序名称长度不能超过 {max} 个字符") + private String processName; + + /** + * 工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序 + */ + @Schema(description = "工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序") + @NotNull(message = "工序类型不能为空") + private Integer processType; + + /** + * 工序分类(如:SMT、组装、测试) + */ + @Schema(description = "工序分类") + @Length(max = 32, message = "工序分类长度不能超过 {max} 个字符") + private String processCategory; + + /** + * 是否关键工序:0-否 1-是 + */ + @Schema(description = "是否关键工序:0-否 1-是") + @NotNull(message = "是否关键工序不能为空") + private Integer isKeyProcess; + + /** + * 是否特殊工序:0-否 1-是 + */ + @Schema(description = "是否特殊工序:0-否 1-是") + @NotNull(message = "是否特殊工序不能为空") + private Integer isSpecialProcess; + + /** + * 是否质量门禁:0-否 1-是(必须检验合格才能流转) + */ + @Schema(description = "是否质量门禁:0-否 1-是(必须检验合格才能流转)") + private Integer isQualityGate; + + /** + * 标准工时(分钟/件) + */ + @Schema(description = "标准工时(分钟/件)") + private Integer standardDurationMinutes; + + /** + * 换型/准备时间(分钟) + */ + @Schema(description = "换型/准备时间(分钟)") + private Integer setupDurationMinutes; + + /** + * 等待时间(分钟) + */ + @Schema(description = "等待时间(分钟)") + private Integer waitingDurationMinutes; + + /** + * 搬运时间(分钟) + */ + @Schema(description = "搬运时间(分钟)") + private Integer moveDurationMinutes; + + /** + * 默认工作中心/设备组 + */ + @Schema(description = "默认工作中心/设备组") + @Length(max = 32, message = "默认工作中心/设备组长度不能超过 {max} 个字符") + private String defaultWorkCenter; + + /** + * 所需技能等级:1-初级 2-中级 3-高级 4-专家 + */ + @Schema(description = "所需技能等级:1-初级 2-中级 3-高级 4-专家") + private Integer requiredSkillLevel; + + /** + * 最少操作人数 + */ + @Schema(description = "最少操作人数") + private Integer minOperatorCount; + + /** + * 工序参数模板 + */ + @Schema(description = "工序参数模板") + @Length(max = 1073741824, message = "工序参数模板长度不能超过 {max} 个字符") + private String parameterTemplate; + + /** + * 是否需要质量检验:0-否 1-是 + */ + @Schema(description = "是否需要质量检验:0-否 1-是") + @NotNull(message = "是否需要质量检验不能为空") + private Integer qualityCheckRequired; + + /** + * 默认抽检比例(%) + */ + @Schema(description = "默认抽检比例(%)") + private BigDecimal defaultCheckRate; + + /** + * 允许不良率(%) + */ + @Schema(description = "允许不良率(%)") + private BigDecimal allowableDefectRate; + + /** + * 是否需要领料:0-否 1-是 + */ + @Schema(description = "是否需要领料:0-否 1-是") + @NotNull(message = "是否需要领料不能为空") + private Integer needMaterial; + + /** + * 发料方式:1-按单发料 2-按工序发料 3-按线边仓发料 + */ + @Schema(description = "发料方式:1-按单发料 2-按工序发料 3-按线边仓发料") + private Integer materialIssueMethod; + + /** + * 状态:1-启用 0-停用 2-草稿 3-已废弃 + */ + @Schema(description = "状态:1-启用 0-停用 2-草稿 3-已废弃") + @NotNull(message = "状态不能为空") + private Integer status; + + /** + * 版本号(修改自动+1) + */ + @Schema(description = "版本号(修改自动+1)") + private Integer version; + + /** + * 排序号 + */ + @Schema(description = "排序号") + private Integer sortOrder; + + /** + * SOP文件URL + */ + @Schema(description = "SOP文件URL") + @Length(max = 500, message = "SOP文件URL长度不能超过 {max} 个字符") + private String sopUrl; + + /** + * 操作视频URL + */ + @Schema(description = "操作视频URL") + @Length(max = 500, message = "操作视频URL长度不能超过 {max} 个字符") + private String videoUrl; + + /** + * 备注 + */ + @Schema(description = "备注") + @Length(max = 500, message = "备注长度不能超过 {max} 个字符") + private String remark; + + /** + * 附件ID列表(逗号分隔) + */ + @Schema(description = "附件ID列表(逗号分隔)") + @Length(max = 500, message = "附件ID列表(逗号分隔)长度不能超过 {max} 个字符") + private String attachmentIds; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessDetailResp.java b/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessDetailResp.java new file mode 100644 index 0000000..de9a5d8 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessDetailResp.java @@ -0,0 +1,218 @@ +package top.mes.admin.process.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; +import java.math.BigDecimal; + +/** + * 工序基础信息详情信息 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Data +@ExcelIgnoreUnannotated +@Schema(description = "工序基础信息详情信息") +public class ProcessDetailResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序编号(唯一) + */ + @Schema(description = "工序编号(唯一)") + @ExcelProperty(value = "工序编号(唯一)") + private String processCode; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + @ExcelProperty(value = "工序名称") + private String processName; + + /** + * 工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序 + */ + @Schema(description = "工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序") + @ExcelProperty(value = "工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序") + private Integer processType; + + /** + * 工序分类(如:SMT、组装、测试) + */ + @Schema(description = "工序分类(如:SMT、组装、测试)") + @ExcelProperty(value = "工序分类(如:SMT、组装、测试)") + private String processCategory; + + /** + * 是否关键工序:0-否 1-是 + */ + @Schema(description = "是否关键工序:0-否 1-是") + @ExcelProperty(value = "是否关键工序:0-否 1-是") + private Integer isKeyProcess; + + /** + * 是否特殊工序:0-否 1-是 + */ + @Schema(description = "是否特殊工序:0-否 1-是") + @ExcelProperty(value = "是否特殊工序:0-否 1-是") + private Integer isSpecialProcess; + + /** + * 是否质量门禁:0-否 1-是(必须检验合格才能流转) + */ + @Schema(description = "是否质量门禁:0-否 1-是(必须检验合格才能流转)") + @ExcelProperty(value = "是否质量门禁:0-否 1-是(必须检验合格才能流转)") + private Integer isQualityGate; + + /** + * 标准工时(分钟/件) + */ + @Schema(description = "标准工时(分钟/件)") + @ExcelProperty(value = "标准工时(分钟/件)") + private Integer standardDurationMinutes; + + /** + * 换型/准备时间(分钟) + */ + @Schema(description = "换型/准备时间(分钟)") + @ExcelProperty(value = "换型/准备时间(分钟)") + private Integer setupDurationMinutes; + + /** + * 等待时间(分钟) + */ + @Schema(description = "等待时间(分钟)") + @ExcelProperty(value = "等待时间(分钟)") + private Integer waitingDurationMinutes; + + /** + * 搬运时间(分钟) + */ + @Schema(description = "搬运时间(分钟)") + @ExcelProperty(value = "搬运时间(分钟)") + private Integer moveDurationMinutes; + + /** + * 默认工作中心/设备组 + */ + @Schema(description = "默认工作中心/设备组") + @ExcelProperty(value = "默认工作中心/设备组") + private String defaultWorkCenter; + + /** + * 所需技能等级:1-初级 2-中级 3-高级 4-专家 + */ + @Schema(description = "所需技能等级:1-初级 2-中级 3-高级 4-专家") + @ExcelProperty(value = "所需技能等级:1-初级 2-中级 3-高级 4-专家") + private Integer requiredSkillLevel; + + /** + * 最少操作人数 + */ + @Schema(description = "最少操作人数") + @ExcelProperty(value = "最少操作人数") + private Integer minOperatorCount; + + /** + * 工序参数模板 + */ + @Schema(description = "工序参数模板") + @ExcelProperty(value = "工序参数模板") + private String parameterTemplate; + + /** + * 是否需要质量检验:0-否 1-是 + */ + @Schema(description = "是否需要质量检验:0-否 1-是") + @ExcelProperty(value = "是否需要质量检验:0-否 1-是") + private Integer qualityCheckRequired; + + /** + * 默认抽检比例(%) + */ + @Schema(description = "默认抽检比例(%)") + @ExcelProperty(value = "默认抽检比例(%)") + private BigDecimal defaultCheckRate; + + /** + * 允许不良率(%) + */ + @Schema(description = "允许不良率(%)") + @ExcelProperty(value = "允许不良率(%)") + private BigDecimal allowableDefectRate; + + /** + * 是否需要领料:0-否 1-是 + */ + @Schema(description = "是否需要领料:0-否 1-是") + @ExcelProperty(value = "是否需要领料:0-否 1-是") + private Integer needMaterial; + + /** + * 发料方式:1-按单发料 2-按工序发料 3-按线边仓发料 + */ + @Schema(description = "发料方式:1-按单发料 2-按工序发料 3-按线边仓发料") + @ExcelProperty(value = "发料方式:1-按单发料 2-按工序发料 3-按线边仓发料") + private Integer materialIssueMethod; + + /** + * 状态:1-启用 0-停用 2-草稿 3-已废弃 + */ + @Schema(description = "状态:1-启用 0-停用 2-草稿 3-已废弃") + @ExcelProperty(value = "状态:1-启用 0-停用 2-草稿 3-已废弃") + private Integer status; + + /** + * 版本号(修改自动+1) + */ + @Schema(description = "版本号(修改自动+1)") + @ExcelProperty(value = "版本号(修改自动+1)") + private Integer version; + + /** + * 排序号 + */ + @Schema(description = "排序号") + @ExcelProperty(value = "排序号") + private Integer sortOrder; + + /** + * SOP文件URL + */ + @Schema(description = "SOP文件URL") + @ExcelProperty(value = "SOP文件URL") + private String sopUrl; + + /** + * 操作视频URL + */ + @Schema(description = "操作视频URL") + @ExcelProperty(value = "操作视频URL") + private String videoUrl; + + /** + * 备注 + */ + @Schema(description = "备注") + @ExcelProperty(value = "备注") + private String remark; + + /** + * 附件ID列表(逗号分隔) + */ + @Schema(description = "附件ID列表(逗号分隔)") + @ExcelProperty(value = "附件ID列表(逗号分隔)") + private String attachmentIds; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessResp.java b/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessResp.java new file mode 100644 index 0000000..c76aa88 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/model/resp/ProcessResp.java @@ -0,0 +1,199 @@ +package top.mes.admin.process.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; +import java.math.BigDecimal; + +/** + * 工序基础信息信息 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Data +@Schema(description = "工序基础信息信息") +public class ProcessResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工序编号(唯一) + */ + @Schema(description = "工序编号(唯一)") + private String processCode; + + /** + * 工序名称 + */ + @Schema(description = "工序名称") + private String processName; + + /** + * 工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序 + */ + @Schema(description = "工序类型:1-生产工序 2-检测工序 3-返工工序 4-包装工序 5-仓储工序 6-物流工序") + private String processType; + + /** + * 工序分类(如:SMT、组装、测试) + */ + @Schema(description = "工序分类(如:SMT、组装、测试)") + private String processCategory; + + /** + * 是否关键工序:0-否 1-是 + */ + @Schema(description = "是否关键工序:0-否 1-是") + private String isKeyProcess; + + /** + * 是否特殊工序:0-否 1-是 + */ + @Schema(description = "是否特殊工序:0-否 1-是") + private String isSpecialProcess; + + /** + * 是否质量门禁:0-否 1-是(必须检验合格才能流转) + */ + @Schema(description = "是否质量门禁:0-否 1-是(必须检验合格才能流转)") + private String isQualityGate; + + /** + * 标准工时(分钟/件) + */ + @Schema(description = "标准工时(分钟/件)") + private Integer standardDurationMinutes; + + /** + * 换型/准备时间(分钟) + */ + @Schema(description = "换型/准备时间(分钟)") + private Integer setupDurationMinutes; + + /** + * 等待时间(分钟) + */ + @Schema(description = "等待时间(分钟)") + private Integer waitingDurationMinutes; + + /** + * 搬运时间(分钟) + */ + @Schema(description = "搬运时间(分钟)") + private Integer moveDurationMinutes; + + /** + * 默认工作中心/设备组 + */ + @Schema(description = "默认工作中心/设备组") + private String defaultWorkCenter; + + /** + * 所需技能等级:1-初级 2-中级 3-高级 4-专家 + */ + @Schema(description = "所需技能等级:1-初级 2-中级 3-高级 4-专家") + private String requiredSkillLevel; + + /** + * 最少操作人数 + */ + @Schema(description = "最少操作人数") + private Integer minOperatorCount; + + /** + * 工序参数模板 + */ + @Schema(description = "工序参数模板") + private String parameterTemplate; + + /** + * 是否需要质量检验:0-否 1-是 + */ + @Schema(description = "是否需要质量检验:0-否 1-是") + private String qualityCheckRequired; + + /** + * 默认抽检比例(%) + */ + @Schema(description = "默认抽检比例(%)") + private BigDecimal defaultCheckRate; + + /** + * 允许不良率(%) + */ + @Schema(description = "允许不良率(%)") + private BigDecimal allowableDefectRate; + + /** + * 是否需要领料:0-否 1-是 + */ + @Schema(description = "是否需要领料:0-否 1-是") + private String needMaterial; + + /** + * 发料方式:1-按单发料 2-按工序发料 3-按线边仓发料 + */ + @Schema(description = "发料方式:1-按单发料 2-按工序发料 3-按线边仓发料") + private String materialIssueMethod; + + /** + * 状态:1-启用 0-停用 2-草稿 3-已废弃 + */ + @Schema(description = "状态:1-启用 0-停用 2-草稿 3-已废弃") + private String status; + + /** + * 版本号(修改自动+1) + */ + @Schema(description = "版本号(修改自动+1)") + private Integer version; + + /** + * 排序号 + */ + @Schema(description = "排序号") + private Integer sortOrder; + + /** + * SOP文件URL + */ + @Schema(description = "SOP文件URL") + private String sopUrl; + + /** + * 操作视频URL + */ + @Schema(description = "操作视频URL") + private String videoUrl; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + /** + * 附件ID列表(逗号分隔) + */ + @Schema(description = "附件ID列表(逗号分隔)") + private String attachmentIds; + + /** + * 修改人 + */ + @Schema(description = "修改人") + private Long updateUser; + + /** + * 修改时间 + */ + @Schema(description = "修改时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/service/ProcessService.java b/mes-module-system/src/main/java/top/mes/admin/process/service/ProcessService.java new file mode 100644 index 0000000..1a351e8 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/service/ProcessService.java @@ -0,0 +1,17 @@ +package top.mes.admin.process.service; + +import top.continew.starter.extension.crud.service.BaseService; +import top.mes.admin.process.model.query.ProcessQuery; +import top.mes.admin.process.model.req.ProcessReq; +import top.mes.admin.process.model.resp.ProcessDetailResp; +import top.mes.admin.process.model.resp.ProcessResp; + +/** + * 工序基础信息业务接口 + * + * @author zc + * @since 2026/06/18 15:48 + */ +public interface ProcessService extends BaseService { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/process/service/impl/ProcessServiceImpl.java b/mes-module-system/src/main/java/top/mes/admin/process/service/impl/ProcessServiceImpl.java new file mode 100644 index 0000000..aa8906d --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/process/service/impl/ProcessServiceImpl.java @@ -0,0 +1,26 @@ +package top.mes.admin.process.service.impl; + +import lombok.RequiredArgsConstructor; + +import org.springframework.stereotype.Service; + +import top.continew.starter.extension.crud.service.BaseServiceImpl; +import top.mes.admin.process.mapper.ProcessMapper; +import top.mes.admin.process.model.entity.ProcessDO; +import top.mes.admin.process.model.query.ProcessQuery; +import top.mes.admin.process.model.req.ProcessReq; +import top.mes.admin.process.model.resp.ProcessDetailResp; +import top.mes.admin.process.model.resp.ProcessResp; +import top.mes.admin.process.service.ProcessService; + +/** + * 工序基础信息业务实现 + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Service +@RequiredArgsConstructor +public class ProcessServiceImpl extends BaseServiceImpl implements ProcessService { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/mapper/RoutingMapper.java b/mes-module-system/src/main/java/top/mes/admin/routing/mapper/RoutingMapper.java new file mode 100644 index 0000000..35e5a32 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/mapper/RoutingMapper.java @@ -0,0 +1,16 @@ +package top.mes.admin.routing.mapper; + +import top.continew.starter.data.mp.base.BaseMapper; +import top.mes.admin.routing.model.entity.RoutingDO; +import org.springframework.stereotype.Repository; + +/** +* 工艺路线主 Mapper +* +* @author zc +* @since 2026/06/23 15:53 +*/ +@Repository +public interface RoutingMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/model/entity/RoutingDO.java b/mes-module-system/src/main/java/top/mes/admin/routing/model/entity/RoutingDO.java new file mode 100644 index 0000000..9b992a0 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/model/entity/RoutingDO.java @@ -0,0 +1,68 @@ +package top.mes.admin.routing.model.entity; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.TableName; + +import top.mes.admin.common.model.entity.BaseDO; + +import java.io.Serial; + +/** + * 工艺路线主实体 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Data +@TableName("sys_routing") +public class RoutingDO extends BaseDO { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工艺路线编码 + */ + private String routingCode; + + /** + * 工艺路线名称 + */ + private String routingName; + + /** + * 关联产品ID(适用产品) + */ + private Long productId; + + /** + * 适用产品分类(如不指定具体产品) + */ + private String productCategory; + + /** + * 默认产线ID + */ + private Long lineId; + + /** + * 版本号 + */ + private Integer version; + + /** + * 是否启用:0-否 1-是 + */ + private Integer isActive; + + /** + * 状态:1-草稿 2-已发布 3-已废弃 + */ + private Integer status; + + /** + * 备注 + */ + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/model/query/RoutingQuery.java b/mes-module-system/src/main/java/top/mes/admin/routing/model/query/RoutingQuery.java new file mode 100644 index 0000000..b684db3 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/model/query/RoutingQuery.java @@ -0,0 +1,61 @@ +package top.mes.admin.routing.model.query; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.continew.starter.data.core.annotation.Query; +import top.continew.starter.data.core.enums.QueryType; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; + +/** + * 工艺路线主查询条件 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Data +@Schema(description = "工艺路线主查询条件") +public class RoutingQuery implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工艺路线编码 + */ + @Schema(description = "工艺路线编码") + @Query(type = QueryType.EQ) + private String routingCode; + + /** + * 工艺路线名称 + */ + @Schema(description = "工艺路线名称") + @Query(type = QueryType.EQ) + private String routingName; + + /** + * 版本号 + */ + @Schema(description = "版本号") + @Query(type = QueryType.EQ) + private Integer version; + + /** + * 是否启用:0-否 1-是 + */ + @Schema(description = "是否启用:0-否 1-是") + @Query(type = QueryType.EQ) + private Integer isActive; + + /** + * 状态:1-草稿 2-已发布 3-已废弃 + */ + @Schema(description = "状态:1-草稿 2-已发布 3-已废弃") + @Query(type = QueryType.EQ) + private Integer status; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/model/req/RoutingReq.java b/mes-module-system/src/main/java/top/mes/admin/routing/model/req/RoutingReq.java new file mode 100644 index 0000000..1cca9c9 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/model/req/RoutingReq.java @@ -0,0 +1,90 @@ +package top.mes.admin.routing.model.req; + +import jakarta.validation.constraints.*; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import org.hibernate.validator.constraints.Length; + +import java.io.Serial; +import java.io.Serializable; +import java.time.*; + +/** + * 创建或修改工艺路线主参数 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Data +@Schema(description = "创建或修改工艺路线主参数") +public class RoutingReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工艺路线编码 + */ + @Schema(description = "工艺路线编码") + @NotBlank(message = "工艺路线编码不能为空") + @Length(max = 32, message = "工艺路线编码长度不能超过 {max} 个字符") + private String routingCode; + + /** + * 工艺路线名称 + */ + @Schema(description = "工艺路线名称") + @NotBlank(message = "工艺路线名称不能为空") + @Length(max = 64, message = "工艺路线名称长度不能超过 {max} 个字符") + private String routingName; + + /** + * 关联产品ID(适用产品) + */ + @Schema(description = "关联产品ID(适用产品)") + private Long productId; + + /** + * 适用产品分类(如不指定具体产品) + */ + @Schema(description = "适用产品分类(如不指定具体产品)") + @Length(max = 32, message = "适用产品分类(如不指定具体产品)长度不能超过 {max} 个字符") + private String productCategory; + + /** + * 默认产线ID + */ + @Schema(description = "默认产线ID") + private Long lineId; + + /** + * 版本号 + */ + @Schema(description = "版本号") + @NotNull(message = "版本号不能为空") + private Integer version; + + /** + * 是否启用:0-否 1-是 + */ + @Schema(description = "是否启用:0-否 1-是") + @NotNull(message = "是否启用:0-否 1-是不能为空") + private Integer isActive; + + /** + * 状态:1-草稿 2-已发布 3-已废弃 + */ + @Schema(description = "状态:1-草稿 2-已发布 3-已废弃") + @NotNull(message = "状态:1-草稿 2-已发布 3-已废弃不能为空") + private Integer status; + + /** + * 备注 + */ + @Schema(description = "备注") + @Length(max = 255, message = "备注长度不能超过 {max} 个字符") + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingDetailResp.java b/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingDetailResp.java new file mode 100644 index 0000000..4a1cc05 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingDetailResp.java @@ -0,0 +1,91 @@ +package top.mes.admin.routing.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; + +/** + * 工艺路线主详情信息 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Data +@ExcelIgnoreUnannotated +@Schema(description = "工艺路线主详情信息") +public class RoutingDetailResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工艺路线编码 + */ + @Schema(description = "工艺路线编码") + @ExcelProperty(value = "工艺路线编码") + private String routingCode; + + /** + * 工艺路线名称 + */ + @Schema(description = "工艺路线名称") + @ExcelProperty(value = "工艺路线名称") + private String routingName; + + /** + * 关联产品ID(适用产品) + */ + @Schema(description = "关联产品ID(适用产品)") + @ExcelProperty(value = "关联产品ID(适用产品)") + private Long productId; + + /** + * 适用产品分类(如不指定具体产品) + */ + @Schema(description = "适用产品分类(如不指定具体产品)") + @ExcelProperty(value = "适用产品分类(如不指定具体产品)") + private String productCategory; + + /** + * 默认产线ID + */ + @Schema(description = "默认产线ID") + @ExcelProperty(value = "默认产线ID") + private Long lineId; + + /** + * 版本号 + */ + @Schema(description = "版本号") + @ExcelProperty(value = "版本号") + private Integer version; + + /** + * 是否启用:0-否 1-是 + */ + @Schema(description = "是否启用:0-否 1-是") + @ExcelProperty(value = "是否启用:0-否 1-是") + private Integer isActive; + + /** + * 状态:1-草稿 2-已发布 3-已废弃 + */ + @Schema(description = "状态:1-草稿 2-已发布 3-已废弃") + @ExcelProperty(value = "状态:1-草稿 2-已发布 3-已废弃") + private Integer status; + + /** + * 备注 + */ + @Schema(description = "备注") + @ExcelProperty(value = "备注") + private String remark; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingResp.java b/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingResp.java new file mode 100644 index 0000000..2acb990 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/model/resp/RoutingResp.java @@ -0,0 +1,90 @@ +package top.mes.admin.routing.model.resp; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.mes.admin.common.model.resp.BaseDetailResp; + +import java.io.Serial; +import java.time.*; + +/** + * 工艺路线主信息 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Data +@Schema(description = "工艺路线主信息") +public class RoutingResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工艺路线编码 + */ + @Schema(description = "工艺路线编码") + private String routingCode; + + /** + * 工艺路线名称 + */ + @Schema(description = "工艺路线名称") + private String routingName; + + /** + * 关联产品ID(适用产品) + */ + @Schema(description = "关联产品ID(适用产品)") + private Long productId; + + /** + * 适用产品分类(如不指定具体产品) + */ + @Schema(description = "适用产品分类(如不指定具体产品)") + private String productCategory; + + /** + * 默认产线ID + */ + @Schema(description = "默认产线ID") + private Long lineId; + + /** + * 版本号 + */ + @Schema(description = "版本号") + private Integer version; + + /** + * 是否启用:0-否 1-是 + */ + @Schema(description = "是否启用:0-否 1-是") + private Integer isActive; + + /** + * 状态:1-草稿 2-已发布 3-已废弃 + */ + @Schema(description = "状态:1-草稿 2-已发布 3-已废弃") + private Integer status; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + /** + * 修改人 + */ + @Schema(description = "修改人") + private Long updateUser; + + /** + * 修改时间 + */ + @Schema(description = "修改时间") + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/service/RoutingService.java b/mes-module-system/src/main/java/top/mes/admin/routing/service/RoutingService.java new file mode 100644 index 0000000..ee35270 --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/service/RoutingService.java @@ -0,0 +1,17 @@ +package top.mes.admin.routing.service; + +import top.continew.starter.extension.crud.service.BaseService; +import top.mes.admin.routing.model.query.RoutingQuery; +import top.mes.admin.routing.model.req.RoutingReq; +import top.mes.admin.routing.model.resp.RoutingDetailResp; +import top.mes.admin.routing.model.resp.RoutingResp; + +/** + * 工艺路线主业务接口 + * + * @author zc + * @since 2026/06/23 15:53 + */ +public interface RoutingService extends BaseService { + +} \ No newline at end of file diff --git a/mes-module-system/src/main/java/top/mes/admin/routing/service/impl/RoutingServiceImpl.java b/mes-module-system/src/main/java/top/mes/admin/routing/service/impl/RoutingServiceImpl.java new file mode 100644 index 0000000..7aec93f --- /dev/null +++ b/mes-module-system/src/main/java/top/mes/admin/routing/service/impl/RoutingServiceImpl.java @@ -0,0 +1,26 @@ +package top.mes.admin.routing.service.impl; + +import lombok.RequiredArgsConstructor; + +import org.springframework.stereotype.Service; + +import top.continew.starter.extension.crud.service.BaseServiceImpl; +import top.mes.admin.routing.mapper.RoutingMapper; +import top.mes.admin.routing.model.entity.RoutingDO; +import top.mes.admin.routing.model.query.RoutingQuery; +import top.mes.admin.routing.model.req.RoutingReq; +import top.mes.admin.routing.model.resp.RoutingDetailResp; +import top.mes.admin.routing.model.resp.RoutingResp; +import top.mes.admin.routing.service.RoutingService; + +/** + * 工艺路线主业务实现 + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Service +@RequiredArgsConstructor +public class RoutingServiceImpl extends BaseServiceImpl implements RoutingService { + +} \ No newline at end of file diff --git a/mes-plugin/mes-plugin-generator/src/main/resources/templates/frontend/api.ftl b/mes-plugin/mes-plugin-generator/src/main/resources/templates/frontend/api.ftl index e737b87..230d94f 100644 --- a/mes-plugin/mes-plugin-generator/src/main/resources/templates/frontend/api.ftl +++ b/mes-plugin/mes-plugin-generator/src/main/resources/templates/frontend/api.ftl @@ -33,7 +33,7 @@ export function list${classNamePrefix}(query: ${classNamePrefix}PageQuery) { /** @desc 查询${businessName}详情 */ export function get${classNamePrefix}(id: string) { - return http.get<${classNamePrefix}DetailResp>(`${'$'}{BASE_URL}/${'$'}{id}`) + return http.get<${classNamePrefix}Resp>(`${'$'}{BASE_URL}/${'$'}{id}`) } /** @desc 新增${businessName} */ diff --git a/mes-webapi/src/main/java/top/mes/admin/controller/bom/BomController.java b/mes-webapi/src/main/java/top/mes/admin/controller/bom/BomController.java new file mode 100644 index 0000000..aa12b91 --- /dev/null +++ b/mes-webapi/src/main/java/top/mes/admin/controller/bom/BomController.java @@ -0,0 +1,29 @@ +package top.mes.admin.controller.bom; + +import top.continew.starter.extension.crud.enums.Api; + +import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.web.bind.annotation.*; + +import lombok.RequiredArgsConstructor; +import top.continew.starter.extension.crud.annotation.CrudRequestMapping; +import top.mes.admin.common.controller.BaseController; +import top.mes.admin.bom.model.query.BomQuery; +import top.mes.admin.bom.model.req.BomReq; +import top.mes.admin.bom.model.resp.BomResp; +import top.mes.admin.bom.service.BomService; + +/** + * BOM物料清单(单)管理 API + * + * @author zc + * @since 2026/06/23 17:28 + */ +@Tag(name = "BOM物料清单(单)管理 API") +@RestController +@RequiredArgsConstructor +@CrudRequestMapping(value = "/bom/bom", api = {Api.PAGE, Api.DETAIL, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) +public class BomController extends BaseController { + +} \ No newline at end of file diff --git a/mes-webapi/src/main/java/top/mes/admin/controller/process/ProcessController.java b/mes-webapi/src/main/java/top/mes/admin/controller/process/ProcessController.java new file mode 100644 index 0000000..e27ca5c --- /dev/null +++ b/mes-webapi/src/main/java/top/mes/admin/controller/process/ProcessController.java @@ -0,0 +1,29 @@ +package top.mes.admin.controller.process; + +import top.continew.starter.extension.crud.enums.Api; + +import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.web.bind.annotation.*; + +import lombok.RequiredArgsConstructor; +import top.continew.starter.extension.crud.annotation.CrudRequestMapping; +import top.mes.admin.common.controller.BaseController; +import top.mes.admin.process.model.query.ProcessQuery; +import top.mes.admin.process.model.req.ProcessReq; +import top.mes.admin.process.model.resp.ProcessResp; +import top.mes.admin.process.service.ProcessService; + +/** + * 工序基础信息管理 API + * + * @author zc + * @since 2026/06/18 15:48 + */ +@Tag(name = "工序基础信息管理 API") +@RestController +@RequiredArgsConstructor +@CrudRequestMapping(value = "/process/process", api = {Api.PAGE, Api.DETAIL, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) +public class ProcessController extends BaseController { + +} \ No newline at end of file diff --git a/mes-webapi/src/main/java/top/mes/admin/controller/routing/RoutingController.java b/mes-webapi/src/main/java/top/mes/admin/controller/routing/RoutingController.java new file mode 100644 index 0000000..e326982 --- /dev/null +++ b/mes-webapi/src/main/java/top/mes/admin/controller/routing/RoutingController.java @@ -0,0 +1,29 @@ +package top.mes.admin.controller.routing; + +import top.continew.starter.extension.crud.enums.Api; + +import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.web.bind.annotation.*; + +import lombok.RequiredArgsConstructor; +import top.continew.starter.extension.crud.annotation.CrudRequestMapping; +import top.mes.admin.common.controller.BaseController; +import top.mes.admin.routing.model.query.RoutingQuery; +import top.mes.admin.routing.model.req.RoutingReq; +import top.mes.admin.routing.model.resp.RoutingResp; +import top.mes.admin.routing.service.RoutingService; + +/** + * 工艺路线主管理 API + * + * @author zc + * @since 2026/06/23 15:53 + */ +@Tag(name = "工艺路线主管理 API") +@RestController +@RequiredArgsConstructor +@CrudRequestMapping(value = "/routing/routing", api = {Api.PAGE, Api.DETAIL, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) +public class RoutingController extends BaseController { + +} \ No newline at end of file