diff --git a/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelOperationController.cs b/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelOperationController.cs
new file mode 100644
index 0000000..a9633ed
--- /dev/null
+++ b/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelOperationController.cs
@@ -0,0 +1,126 @@
+using Microsoft.AspNetCore.Mvc;
+using DOAN.Model.Dto;
+using DOAN.Admin.WebApi.Filters;
+using DOAN.Service.MES.process.IService;
+using DOAN.Model.MES.process;
+using DOAN.Model.MES.process.Dto;
+using DOAN.Service.Business;
+
+//创建时间:2025-09-20
+namespace DOAN.Admin.WebApi.Controllers
+{
+ ///
+ /// 工序表
+ ///
+ [Verify]
+ [Route("mes/process/ProcessmodelOperation")]
+ public class ProcessmodelOperationController : BaseController
+ {
+ ///
+ /// 工序表接口
+ ///
+ private readonly IProcessmodelOperationService _ProcessmodelOperationService;
+
+ public ProcessmodelOperationController(IProcessmodelOperationService ProcessmodelOperationService)
+ {
+ _ProcessmodelOperationService = ProcessmodelOperationService;
+ }
+
+
+ ///
+ /// 查询工艺路线父子表
+ ///
+ ///
+ ///
+ [HttpGet("list_parent")]
+ [ActionPermissionFilter(Permission = "process:processmodelrouting:list")]
+ public IActionResult QueryProcessmodelRouting([FromQuery] ProcessmodelRoutingQueryDto parm)
+ {
+ var response = _ProcessmodelOperationService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+
+
+ ///
+ /// 查询工序表列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "process:processmodeloperation:list")]
+ public IActionResult QueryProcessmodelOperation([FromQuery] ProcessmodelOperationQueryDto parm)
+ {
+ var response = _ProcessmodelOperationService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+
+ ///
+ /// 查询工序表详情
+ ///
+ ///
+ ///
+ [HttpGet("{Id}")]
+ [ActionPermissionFilter(Permission = "process:processmodeloperation:query")]
+ public IActionResult GetProcessmodelOperation(int Id)
+ {
+ var response = _ProcessmodelOperationService.GetInfo(Id);
+
+ var info = response.Adapt();
+ return SUCCESS(info);
+ }
+
+ ///
+ /// 添加工序表
+ ///
+ ///
+ [HttpPost]
+ [ActionPermissionFilter(Permission = "process:processmodeloperation:add")]
+ [Log(Title = "工序表", BusinessType = BusinessType.INSERT)]
+ public IActionResult AddProcessmodelOperation([FromBody] ProcessmodelOperationDto parm)
+ {
+ var modal = parm.Adapt().ToCreate(HttpContext);
+
+ var response = _ProcessmodelOperationService.AddProcessmodelOperation(modal);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 更新工序表
+ ///
+ ///
+ [HttpPut]
+ [ActionPermissionFilter(Permission = "process:processmodeloperation:edit")]
+ [Log(Title = "工序表", BusinessType = BusinessType.UPDATE)]
+ public IActionResult UpdateProcessmodelOperation([FromBody] ProcessmodelOperationDto parm)
+ {
+ var modal = parm.Adapt().ToUpdate(HttpContext);
+ var response = _ProcessmodelOperationService.UpdateProcessmodelOperation(modal);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 删除工序表
+ ///
+ ///
+ [HttpDelete("{ids}")]
+ [ActionPermissionFilter(Permission = "process:processmodeloperation:delete")]
+ [Log(Title = "工序表", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteProcessmodelOperation(string ids)
+ {
+ int[] idsArr = Tools.SpitIntArrary(ids);
+ if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
+
+ var response = _ProcessmodelOperationService.Delete(idsArr);
+
+ return ToResponse(response);
+ }
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelRoutingController.cs b/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelRoutingController.cs
index 76f9800..50bb3e3 100644
--- a/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelRoutingController.cs
+++ b/DOAN.Admin.WebApi/Controllers/MES/process/ProcessmodelRoutingController.cs
@@ -1,8 +1,10 @@
using Microsoft.AspNetCore.Mvc;
using DOAN.Model.Dto;
-using DOAN.Model.Business;
-using DOAN.Service.Business.IBusinessService;
+
using DOAN.Admin.WebApi.Filters;
+using DOAN.Service.MES.process.IService;
+using DOAN.Model.MES.process;
+using DOAN.Model.MES.process.Dto;
//创建时间:2025-09-19
namespace DOAN.Admin.WebApi.Controllers
diff --git a/DOAN.Model/MES/process/Dto/ProcessmodelOperationDto.cs b/DOAN.Model/MES/process/Dto/ProcessmodelOperationDto.cs
new file mode 100644
index 0000000..3a5bad1
--- /dev/null
+++ b/DOAN.Model/MES/process/Dto/ProcessmodelOperationDto.cs
@@ -0,0 +1,55 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace DOAN.Model.MES.process.Dto
+{
+ ///
+ /// 工序表查询对象
+ ///
+ public class ProcessmodelOperationQueryDto : PagerInfo
+ {
+ }
+
+ ///
+ /// 工序表输入输出对象
+ ///
+ public class ProcessmodelOperationDto
+ {
+ [Required(ErrorMessage = "主键ID不能为空")]
+ public int Id { get; set; }
+
+ [Required(ErrorMessage = "工序编码不能为空")]
+ public string OperationCode { get; set; }
+
+ [Required(ErrorMessage = "工序名称不能为空")]
+ public string OperationName { get; set; }
+
+ [Required(ErrorMessage = "所属工艺路线ID不能为空")]
+ public int RoutingId { get; set; }
+
+ [Required(ErrorMessage = "工序顺序号不能为空")]
+ public int OperationSeq { get; set; }
+
+ public string WorkCenter { get; set; }
+
+ public decimal StandardTime { get; set; }
+
+ public string Description { get; set; }
+
+ [Required(ErrorMessage = "创建时间不能为空")]
+ public DateTime? CreateTime { get; set; }
+
+ public DateTime? UpdateTime { get; set; }
+
+ [Required(ErrorMessage = "是否有效:1=有效,0=无效不能为空")]
+ public string IsActive { get; set; }
+
+
+
+ }
+
+
+ public class ProcessmodelRouteParentDto :ProcessmodelRouting
+ {
+ public int parentId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/DOAN.Model/MES/process/Dto/ProcessmodelRoutingDto.cs b/DOAN.Model/MES/process/Dto/ProcessmodelRoutingDto.cs
index e67d7b5..0c99c78 100644
--- a/DOAN.Model/MES/process/Dto/ProcessmodelRoutingDto.cs
+++ b/DOAN.Model/MES/process/Dto/ProcessmodelRoutingDto.cs
@@ -1,6 +1,6 @@
using System.ComponentModel.DataAnnotations;
-namespace DOAN.Model.Dto
+namespace DOAN.Model.MES.process.Dto
{
///
/// 工艺路线表查询对象
diff --git a/DOAN.Model/MES/process/ProcessmodelOperation.cs b/DOAN.Model/MES/process/ProcessmodelOperation.cs
new file mode 100644
index 0000000..4724651
--- /dev/null
+++ b/DOAN.Model/MES/process/ProcessmodelOperation.cs
@@ -0,0 +1,76 @@
+
+namespace DOAN.Model.MES.process
+{
+ ///
+ /// 工序表
+ ///
+ [SugarTable("processmodel_operation")]
+ public class ProcessmodelOperation
+ {
+ ///
+ /// 主键ID
+ ///
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+ public int Id { get; set; }
+
+ ///
+ /// 工序编码
+ ///
+ [SugarColumn(ColumnName = "operation_code")]
+ public string OperationCode { get; set; }
+
+ ///
+ /// 工序名称
+ ///
+ [SugarColumn(ColumnName = "operation_name")]
+ public string OperationName { get; set; }
+
+ ///
+ /// 所属工艺路线ID
+ ///
+ [SugarColumn(ColumnName = "routing_id")]
+ public int RoutingId { get; set; }
+
+ ///
+ /// 工序顺序号
+ ///
+ [SugarColumn(ColumnName = "operation_seq")]
+ public int OperationSeq { get; set; }
+
+ ///
+ /// 工作中心/设备/车间
+ ///
+ [SugarColumn(ColumnName = "work_center")]
+ public string WorkCenter { get; set; }
+
+ ///
+ /// 标准工时(单位:分钟)
+ ///
+ [SugarColumn(ColumnName = "standard_time")]
+ public decimal StandardTime { get; set; }
+
+ ///
+ /// 工序描述
+ ///
+ public string Description { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(ColumnName = "create_time")]
+ public DateTime? CreateTime { get; set; }
+
+ ///
+ /// 更新时间
+ ///
+ [SugarColumn(ColumnName = "update_time")]
+ public DateTime? UpdateTime { get; set; }
+
+ ///
+ /// 是否有效:1=有效,0=无效
+ ///
+ [SugarColumn(ColumnName = "is_active")]
+ public string IsActive { get; set; }
+
+ }
+}
\ No newline at end of file
diff --git a/DOAN.Model/MES/process/ProcessmodelRouting.cs b/DOAN.Model/MES/process/ProcessmodelRouting.cs
index 33920f7..d057d10 100644
--- a/DOAN.Model/MES/process/ProcessmodelRouting.cs
+++ b/DOAN.Model/MES/process/ProcessmodelRouting.cs
@@ -1,5 +1,5 @@
-namespace DOAN.Model.Business
+namespace DOAN.Model.MES.process
{
///
/// 工艺路线表
diff --git a/DOAN.Service/MES/process/IService/IProcessmodelOperationService.cs b/DOAN.Service/MES/process/IService/IProcessmodelOperationService.cs
new file mode 100644
index 0000000..addab35
--- /dev/null
+++ b/DOAN.Service/MES/process/IService/IProcessmodelOperationService.cs
@@ -0,0 +1,26 @@
+
+using DOAN.Model;
+using DOAN.Model.Dto;
+using System.Collections.Generic;
+using DOAN.Model.MES.process.Dto;
+using DOAN.Model.MES.process;
+using Aliyun.OSS;
+
+namespace DOAN.Service.MES.process.IService
+{
+ ///
+ /// 工序表service接口
+ ///
+ public interface IProcessmodelOperationService : IBaseService
+ {
+ List GetList(ProcessmodelRoutingQueryDto parm);
+ PagedInfo GetList(ProcessmodelOperationQueryDto parm);
+
+ ProcessmodelOperation GetInfo(int Id);
+
+ ProcessmodelOperation AddProcessmodelOperation(ProcessmodelOperation parm);
+
+ int UpdateProcessmodelOperation(ProcessmodelOperation parm);
+
+ }
+}
diff --git a/DOAN.Service/MES/process/IService/IProcessmodelRoutingService.cs b/DOAN.Service/MES/process/IService/IProcessmodelRoutingService.cs
index 0d8c7d9..fb38fd3 100644
--- a/DOAN.Service/MES/process/IService/IProcessmodelRoutingService.cs
+++ b/DOAN.Service/MES/process/IService/IProcessmodelRoutingService.cs
@@ -1,10 +1,12 @@
using System;
using DOAN.Model;
using DOAN.Model.Dto;
-using DOAN.Model.Business;
-using System.Collections.Generic;
-namespace DOAN.Service.Business.IBusinessService
+using System.Collections.Generic;
+using DOAN.Model.MES.process.Dto;
+using DOAN.Model.MES.process;
+
+namespace DOAN.Service.MES.process.IService
{
///
/// 工艺路线表service接口
diff --git a/DOAN.Service/MES/process/ProcessmodelOperationService.cs b/DOAN.Service/MES/process/ProcessmodelOperationService.cs
new file mode 100644
index 0000000..2dbd355
--- /dev/null
+++ b/DOAN.Service/MES/process/ProcessmodelOperationService.cs
@@ -0,0 +1,114 @@
+using System;
+using SqlSugar;
+using Infrastructure.Attribute;
+using Infrastructure.Extensions;
+using DOAN.Model;
+using DOAN.Model.Dto;
+
+using DOAN.Repository;
+
+using System.Linq;
+using DOAN.Model.MES.process.Dto;
+using DOAN.Service.MES.process.IService;
+using DOAN.Model.MES.process;
+
+namespace DOAN.Service.Business
+{
+ ///
+ /// 工序表Service业务层处理
+ ///
+ [AppService(ServiceType = typeof(IProcessmodelOperationService), ServiceLifetime = LifeTime.Transient)]
+ public class ProcessmodelOperationService : BaseService, IProcessmodelOperationService
+ {
+
+ public List GetList(ProcessmodelRoutingQueryDto parm)
+ {
+ var predicate = Expressionable.Create()
+ .AndIF(!string.IsNullOrEmpty(parm.RoutingCode), p => parm.RoutingCode.Contains(p.RoutingCode))
+ .AndIF(!string.IsNullOrEmpty(parm.RoutingName), p => parm.RoutingName.Contains(p.RoutingName))
+ .AndIF(!string.IsNullOrEmpty(parm.Version), p => parm.Version.Contains(p.Version));
+
+ var response = Context.Queryable()
+ .Where(predicate.ToExpression())
+ .Select(p => new ProcessmodelRouteParentDto()
+ {
+ RoutingCode = p.RoutingCode,
+ RoutingName = p.RoutingName,
+ Version = p.Version,
+ ProductCode = p.ProductCode,
+ Description = p.Description,
+ parentId = 0
+
+ });
+ return response.ToList();
+
+
+ }
+
+
+
+ ///
+ /// 查询工序表列表
+ ///
+ ///
+ ///
+ public PagedInfo GetList(ProcessmodelOperationQueryDto parm)
+ {
+ var predicate = Expressionable.Create();
+
+ var response = Queryable()
+ .Where(predicate.ToExpression())
+ .ToPage(parm);
+
+ return response;
+ }
+
+
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ public ProcessmodelOperation GetInfo(int Id)
+ {
+ var response = Queryable()
+ .Where(x => x.Id == Id)
+ .First();
+
+ return response;
+ }
+
+ ///
+ /// 添加工序表
+ ///
+ ///
+ ///
+ public ProcessmodelOperation AddProcessmodelOperation(ProcessmodelOperation model)
+ {
+ return Context.Insertable(model).ExecuteReturnEntity();
+ }
+
+ ///
+ /// 修改工序表
+ ///
+ ///
+ ///
+ public int UpdateProcessmodelOperation(ProcessmodelOperation model)
+ {
+ //var response = Update(w => w.Id == model.Id, it => new ProcessmodelOperation()
+ //{
+ // OperationCode = model.OperationCode,
+ // OperationName = model.OperationName,
+ // OperationSeq = model.OperationSeq,
+ // WorkCenter = model.WorkCenter,
+ // StandardTime = model.StandardTime,
+ // Description = model.Description,
+ // UpdateTime = model.UpdateTime,
+ // IsActive = model.IsActive,
+ //});
+ //return response;
+ return Update(model, true);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/DOAN.Service/MES/process/ProcessmodelRoutingService.cs b/DOAN.Service/MES/process/ProcessmodelRoutingService.cs
index ac9f2b6..629005a 100644
--- a/DOAN.Service/MES/process/ProcessmodelRoutingService.cs
+++ b/DOAN.Service/MES/process/ProcessmodelRoutingService.cs
@@ -4,10 +4,13 @@ using Infrastructure.Attribute;
using Infrastructure.Extensions;
using DOAN.Model;
using DOAN.Model.Dto;
-using DOAN.Model.Business;
+
using DOAN.Repository;
using DOAN.Service.Business.IBusinessService;
using System.Linq;
+using DOAN.Service.MES.process.IService;
+using DOAN.Model.MES.process;
+using DOAN.Model.MES.process.Dto;
namespace DOAN.Service.Business
{