| | |
| | | using Volo.Abp.Data; |
| | | using Volo.Abp.ObjectExtending; |
| | | using Volo.Abp.ObjectMapping; |
| | | using CMS.Plugin.FormulaManagement.Abstractions; |
| | | using CMS.Plugin.OrderManagement.Abstractions.Enums; |
| | | using CMS.Plugin.OrderManagement.Abstractions.Models; |
| | | using CMS.Plugin.OrderManagement.Abstractions; |
| | | using CMS.Plugin.ProductManagement.Abstractions; |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | |
| | | namespace CMS.Plugin.PipeLineLems.Application.Implements; |
| | | |
| | |
| | | public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService |
| | | { |
| | | private readonly IWorkPlanRepository workPlanRepository; |
| | | private readonly IServiceProvider _serviceProvider; |
| | | private readonly SharedService _sharedService; |
| | | |
| | | /// <summary> |
| | | /// Initializes a new instance of the <see cref="WorkPlanAppService"/> class. |
| | | /// </summary> |
| | | /// <param name="WorkPlanRepository">The task job repository.</param> |
| | | public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository) |
| | | public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository, IServiceProvider serviceProvider, SharedService sharedService) |
| | | { |
| | | workPlanRepository = _WorkPlanRepository; |
| | | _serviceProvider = serviceProvider; |
| | | _sharedService = sharedService; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | updateObj.TaskCode = input.TaskCode; |
| | | updateObj.OrgMaterialCode = input.OrgMaterialCode; |
| | | updateObj.DataIdentifier = input.DataIdentifier; |
| | | updateObj.MaterialMode = input.MaterialMode; |
| | | updateObj.Length = input.Length; |
| | | updateObj.MarkingContent = input.MarkingContent; |
| | | updateObj.MarkingPosition = input.MarkingPosition; |
| | | updateObj.CuttingPosition = input.CuttingPosition; |
| | | updateObj.Quantity = input.Quantity; |
| | | updateObj.FlangeThickness = input.FlangeThickness; |
| | | updateObj.FlangeInnerDiameter = input.FlangeInnerDiameter; |
| | | updateObj.WeldingHeatInput = input.WeldingHeatInput; |
| | | updateObj.PipeAllowableStress = input.PipeAllowableStress; |
| | | updateObj.PipeDiameter = input.PipeDiameter; |
| | | updateObj.PipeWallThickness = input.PipeWallThickness; |
| | | updateObj.FactoryCode = input.FactoryCode; |
| | | updateObj.ProductCode = input.ProductCode; |
| | | updateObj.WorkstationCode = input.WorkstationCode; |
| | |
| | | updateObj.ProcessName = input.ProcessName; |
| | | updateObj.PipeFittingCode = input.PipeFittingCode; |
| | | updateObj.PreSerialNumber = input.PreSerialNumber; |
| | | updateObj.DataIdentifier = input.DataIdentifier; |
| | | updateObj.PipeSpecCode = input.PipeSpecCode; |
| | | updateObj.PipeSectionName = input.PipeSectionName; |
| | | updateObj.OuterDiameter = input.OuterDiameter; |
| | | updateObj.Bevel = input.Bevel; |
| | | updateObj.Thickness = input.Thickness; |
| | | updateObj.Material = input.Material; |
| | | updateObj.Length = input.Length; |
| | | updateObj.DrillingPosition = input.DrillingPosition; |
| | | updateObj.Intersecting = input.Intersecting; |
| | | updateObj.InterfaceRequirement = input.InterfaceRequirement; |
| | | updateObj.HasMainSignature = input.HasMainSignature; |
| | | updateObj.Quantity = input.Quantity; |
| | | updateObj.MarkingContent = input.MarkingContent; |
| | | updateObj.CuttingFile = input.CuttingFile; |
| | | updateObj.BranchOuterDiameter = input.BranchOuterDiameter; |
| | | updateObj.BranchWallThickness = input.BranchWallThickness; |
| | | updateObj.BranchMaterial = input.BranchMaterial; |
| | | updateObj.BranchPortRadius = input.BranchPortRadius; |
| | | updateObj.BranchPortAngle = input.BranchPortAngle; |
| | | updateObj.BranchPortRequirement = input.BranchPortRequirement; |
| | | updateObj.IntersectingLineType = input.IntersectingLineType; |
| | | updateObj.IntersectingLineCategory = input.IntersectingLineCategory; |
| | | updateObj.FinishedProductScale = input.FinishedProductScale; |
| | | updateObj.FlangeThickness = input.FlangeThickness; |
| | | updateObj.FlangeInnerDiameter = input.FlangeInnerDiameter; |
| | | updateObj.WeldingHeatInput = input.WeldingHeatInput; |
| | | updateObj.PipeAllowableStress = input.PipeAllowableStress; |
| | | updateObj.PipeDiameter = input.PipeDiameter; |
| | | updateObj.PipeWallThickness = input.PipeWallThickness; |
| | | updateObj.VRData = input.VRData; |
| | | updateObj.ProcessRouteNumber = input.ProcessRouteNumber; |
| | | updateObj.PlannedStartTime = input.PlannedStartTime; |
| | | updateObj.PlannedEndTime = input.PlannedEndTime; |
| | | updateObj.TimeInfo = input.TimeInfo; |
| | | updateObj.RedundantField1 = input.RedundantField1; |
| | | updateObj.RedundantField2 = input.RedundantField2; |
| | | updateObj.RedundantField3 = input.RedundantField3; |
| | | updateObj.TeamInfo = input.TeamInfo; |
| | | updateObj.Timestamp = input.Timestamp; |
| | | updateObj.Remark = input.Remark; |
| | | updateObj.IsDisabled = input.IsDisabled; |
| | | |
| | | |
| | | await workPlanRepository.UpdateAsync(updateObj); |
| | |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public async Task ImportAsync(WorkPlansImportModel input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); |
| | | var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>(); |
| | | var importItems = input.WorkPlans; |
| | | //转换数据 |
| | | var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans); |
| | | |
| | | if (importItems != null && importItems.Any()) |
| | | { |
| | | #region 导入校验 |
| | | |
| | | // 判断名称是否重复,并输出第几行重复 |
| | | var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList(); |
| | | if (duplicateWorkPlans?.Any() == true) |
| | | { |
| | | var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key} 名称重复"); |
| | | var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWorkPlanMsgs)},终止导入"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | foreach (var impItem in importItems) |
| | | { |
| | | if (impItem.TaskCode.IsNullOrWhiteSpace()) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | if (impItem.TaskCode.IsNullOrWhiteSpace()) |
| | | { |
| | | var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WorkPlan名称不能为空"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode); |
| | | if (oldWorkPlan != null) |
| | | { |
| | | var workPlanUpdateDto = new WorkPlanUpdateDto |
| | | { |
| | | TaskCode = impItem.TaskCode, |
| | | OrgMaterialCode = impItem.OrgMaterialCode, |
| | | FactoryCode = impItem.FactoryCode, |
| | | ProductCode = impItem.ProductCode, |
| | | WorkstationCode = impItem.WorkstationCode, |
| | | EquipmentCode = impItem.EquipmentCode, |
| | | WorkpieceName = impItem.WorkpieceName, |
| | | ProcessName = impItem.ProcessName, |
| | | PipeFittingCode = impItem.PipeFittingCode, |
| | | PreSerialNumber = impItem.PreSerialNumber, |
| | | DataIdentifier = impItem.DataIdentifier, |
| | | PipeSpecCode = impItem.PipeSpecCode, |
| | | PipeSectionName = impItem.PipeSectionName, |
| | | OuterDiameter = impItem.OuterDiameter, |
| | | Bevel = impItem.Bevel, |
| | | Material = impItem.Material, |
| | | Length = impItem.Length, |
| | | DrillingPosition = impItem.DrillingPosition, |
| | | Intersecting = impItem.Intersecting, |
| | | InterfaceRequirement = impItem.InterfaceRequirement, |
| | | HasMainSignature = impItem.HasMainSignature, |
| | | Quantity = impItem.Quantity, |
| | | MarkingContent = impItem.MarkingContent, |
| | | CuttingFile = impItem.CuttingFile, |
| | | BranchOuterDiameter = impItem.BranchOuterDiameter, |
| | | BranchWallThickness = impItem.BranchWallThickness, |
| | | BranchMaterial = impItem.BranchMaterial, |
| | | BranchPortRadius = impItem.BranchPortRadius, |
| | | BranchPortAngle = impItem.BranchPortAngle, |
| | | BranchPortRequirement = impItem.BranchPortRequirement, |
| | | IntersectingLineType = impItem.IntersectingLineType, |
| | | IntersectingLineCategory = impItem.IntersectingLineCategory, |
| | | FinishedProductScale = impItem.FinishedProductScale, |
| | | FlangeThickness = impItem.FlangeThickness, |
| | | FlangeInnerDiameter = impItem.FlangeInnerDiameter, |
| | | WeldingHeatInput = impItem.WeldingHeatInput, |
| | | PipeAllowableStress = impItem.PipeAllowableStress, |
| | | PipeDiameter = impItem.PipeDiameter, |
| | | PipeWallThickness = impItem.PipeWallThickness, |
| | | VRData = impItem.VRData, |
| | | ProcessRouteNumber = impItem.ProcessRouteNumber, |
| | | PlannedStartTime = impItem.PlannedStartTime, |
| | | PlannedEndTime = impItem.PlannedEndTime, |
| | | TimeInfo = impItem.TimeInfo, |
| | | RedundantField1 = impItem.RedundantField1, |
| | | RedundantField2 = impItem.RedundantField2, |
| | | RedundantField3 = impItem.RedundantField3, |
| | | Remark = impItem.Remark, |
| | | IsDisabled = impItem.IsDisabled, |
| | | |
| | | }; |
| | | |
| | | workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto)); |
| | | } |
| | | else |
| | | { |
| | | var workPlanCreateDto = new WorkPlanCreateDto |
| | | { |
| | | TaskCode = impItem.TaskCode, |
| | | OrgMaterialCode = impItem.OrgMaterialCode, |
| | | FactoryCode = impItem.FactoryCode, |
| | | ProductCode = impItem.ProductCode, |
| | | WorkstationCode = impItem.WorkstationCode, |
| | | EquipmentCode = impItem.EquipmentCode, |
| | | WorkpieceName = impItem.WorkpieceName, |
| | | ProcessName = impItem.ProcessName, |
| | | PipeFittingCode = impItem.PipeFittingCode, |
| | | PreSerialNumber = impItem.PreSerialNumber, |
| | | DataIdentifier = impItem.DataIdentifier, |
| | | PipeSpecCode = impItem.PipeSpecCode, |
| | | PipeSectionName = impItem.PipeSectionName, |
| | | OuterDiameter = impItem.OuterDiameter, |
| | | Bevel = impItem.Bevel, |
| | | Material = impItem.Material, |
| | | Length = impItem.Length, |
| | | DrillingPosition = impItem.DrillingPosition, |
| | | Intersecting = impItem.Intersecting, |
| | | InterfaceRequirement = impItem.InterfaceRequirement, |
| | | HasMainSignature = impItem.HasMainSignature, |
| | | Quantity = impItem.Quantity, |
| | | MarkingContent = impItem.MarkingContent, |
| | | CuttingFile = impItem.CuttingFile, |
| | | BranchOuterDiameter = impItem.BranchOuterDiameter, |
| | | BranchWallThickness = impItem.BranchWallThickness, |
| | | BranchMaterial = impItem.BranchMaterial, |
| | | BranchPortRadius = impItem.BranchPortRadius, |
| | | BranchPortAngle = impItem.BranchPortAngle, |
| | | BranchPortRequirement = impItem.BranchPortRequirement, |
| | | IntersectingLineType = impItem.IntersectingLineType, |
| | | IntersectingLineCategory = impItem.IntersectingLineCategory, |
| | | FinishedProductScale = impItem.FinishedProductScale, |
| | | FlangeThickness = impItem.FlangeThickness, |
| | | FlangeInnerDiameter = impItem.FlangeInnerDiameter, |
| | | WeldingHeatInput = impItem.WeldingHeatInput, |
| | | PipeAllowableStress = impItem.PipeAllowableStress, |
| | | PipeDiameter = impItem.PipeDiameter, |
| | | PipeWallThickness = impItem.PipeWallThickness, |
| | | VRData = impItem.VRData, |
| | | ProcessRouteNumber = impItem.ProcessRouteNumber, |
| | | PlannedStartTime = impItem.PlannedStartTime, |
| | | PlannedEndTime = impItem.PlannedEndTime, |
| | | TimeInfo = impItem.TimeInfo, |
| | | RedundantField1 = impItem.RedundantField1, |
| | | RedundantField2 = impItem.RedundantField2, |
| | | RedundantField3 = impItem.RedundantField3, |
| | | Remark = impItem.Remark, |
| | | IsDisabled = impItem.IsDisabled, |
| | | |
| | | }; |
| | | |
| | | workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 新增 |
| | | foreach (var workPlanDto in workPlanCreateDtos) |
| | | { |
| | | try |
| | | { |
| | | await CreateAsync(workPlanDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导入失败!配置,第{workPlanDto.RowIndex}行:{e.Message},终止导入"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | |
| | | // 更新 |
| | | foreach (var workPlanDto in workPlanUpdateDtos) |
| | | { |
| | | try |
| | | { |
| | | await UpdateAsync(workPlanDto.Id, workPlanDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导入失败!配置,第{workPlanDto.RowIndex}行:{e.Message},终止导入"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | //await CreatebyApsAsync(result); |
| | | await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this); |
| | | } |
| | | |
| | | |
| | | public async Task<MesOrderResponse> CreatebyApsAsync(List<WorkPlanInput> input) |
| | | { |
| | | var response=await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, this); |
| | | |
| | | return response; |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 导入作业计划表 |
| | | ///// </summary> |
| | | ///// <param name="input"></param> |
| | | ///// <returns></returns> |
| | | ///// <exception cref="UserFriendlyException"></exception> |
| | | //public async Task ImportAsync(WorkPlansImportModel input) |
| | | //{ |
| | | // Check.NotNull(input, nameof(input)); |
| | | |
| | | // var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); |
| | | // var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>(); |
| | | // var importItems = input.WorkPlans; |
| | | |
| | | // if (importItems != null && importItems.Any()) |
| | | // { |
| | | // #region 导入校验 |
| | | |
| | | // // 判断名称是否重复,并输出第几行重复 |
| | | // var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList(); |
| | | // if (duplicateWorkPlans?.Any() == true) |
| | | // { |
| | | // var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key} 名称重复"); |
| | | // var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWorkPlanMsgs)},终止导入"; |
| | | // throw new UserFriendlyException(errorMsg); |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // foreach (var impItem in importItems) |
| | | // { |
| | | // if (impItem.TaskCode.IsNullOrWhiteSpace()) |
| | | // { |
| | | // continue; |
| | | // } |
| | | |
| | | // if (impItem.TaskCode.IsNullOrWhiteSpace()) |
| | | // { |
| | | // var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WorkPlan名称不能为空"; |
| | | // throw new UserFriendlyException(errorMsg); |
| | | // } |
| | | |
| | | // var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode); |
| | | // if (oldWorkPlan != null) |
| | | // { |
| | | // var workPlanUpdateDto = new WorkPlanUpdateDto |
| | | // { |
| | | // TaskCode = impItem.TaskCode, |
| | | // DataIdentifier = impItem.DataIdentifier, |
| | | // MaterialMode = impItem.MaterialMode, |
| | | // Length = impItem.Length, |
| | | // MarkingContent = impItem.MarkingContent, |
| | | // MarkingPosition = impItem.MarkingPosition, |
| | | // CuttingPosition = impItem.CuttingPosition, |
| | | // Quantity = impItem.Quantity, |
| | | // FlangeThickness = impItem.FlangeThickness, |
| | | // FlangeInnerDiameter = impItem.FlangeInnerDiameter, |
| | | // WeldingHeatInput = impItem.WeldingHeatInput, |
| | | // PipeAllowableStress = impItem.PipeAllowableStress, |
| | | // PipeDiameter = impItem.PipeDiameter, |
| | | // PipeWallThickness = impItem.PipeWallThickness, |
| | | // FactoryCode = impItem.FactoryCode, |
| | | // ProductCode = impItem.ProductCode, |
| | | // WorkstationCode = impItem.WorkstationCode, |
| | | // EquipmentCode = impItem.EquipmentCode, |
| | | // WorkpieceName = impItem.WorkpieceName, |
| | | // ProcessName = impItem.ProcessName, |
| | | // PipeFittingCode = impItem.PipeFittingCode, |
| | | // PreSerialNumber = impItem.PreSerialNumber, |
| | | // PipeSpecCode = impItem.PipeSpecCode, |
| | | // PipeSectionName = impItem.PipeSectionName, |
| | | // OuterDiameter = impItem.OuterDiameter, |
| | | // Thickness = impItem.Thickness, |
| | | // Material = impItem.Material, |
| | | // HasMainSignature = impItem.HasMainSignature, |
| | | // ProcessRouteNumber = impItem.ProcessRouteNumber, |
| | | // PlannedStartTime = impItem.PlannedStartTime, |
| | | // PlannedEndTime = impItem.PlannedEndTime, |
| | | // TeamInfo = impItem.TeamInfo, |
| | | // Timestamp = impItem.Timestamp, |
| | | // Remark = impItem.Remark, |
| | | |
| | | // }; |
| | | |
| | | // workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto)); |
| | | // } |
| | | // else |
| | | // { |
| | | // var workPlanCreateDto = new WorkPlanCreateDto |
| | | // { |
| | | // TaskCode = impItem.TaskCode, |
| | | // DataIdentifier = impItem.DataIdentifier, |
| | | // MaterialMode = impItem.MaterialMode, |
| | | // Length = impItem.Length, |
| | | // MarkingContent = impItem.MarkingContent, |
| | | // MarkingPosition = impItem.MarkingPosition, |
| | | // CuttingPosition = impItem.CuttingPosition, |
| | | // Quantity = impItem.Quantity, |
| | | // FlangeThickness = impItem.FlangeThickness, |
| | | // FlangeInnerDiameter = impItem.FlangeInnerDiameter, |
| | | // WeldingHeatInput = impItem.WeldingHeatInput, |
| | | // PipeAllowableStress = impItem.PipeAllowableStress, |
| | | // PipeDiameter = impItem.PipeDiameter, |
| | | // PipeWallThickness = impItem.PipeWallThickness, |
| | | // FactoryCode = impItem.FactoryCode, |
| | | // ProductCode = impItem.ProductCode, |
| | | // WorkstationCode = impItem.WorkstationCode, |
| | | // EquipmentCode = impItem.EquipmentCode, |
| | | // WorkpieceName = impItem.WorkpieceName, |
| | | // ProcessName = impItem.ProcessName, |
| | | // PipeFittingCode = impItem.PipeFittingCode, |
| | | // PreSerialNumber = impItem.PreSerialNumber, |
| | | // PipeSpecCode = impItem.PipeSpecCode, |
| | | // PipeSectionName = impItem.PipeSectionName, |
| | | // OuterDiameter = impItem.OuterDiameter, |
| | | // Thickness = impItem.Thickness, |
| | | // Material = impItem.Material, |
| | | // HasMainSignature = impItem.HasMainSignature, |
| | | // ProcessRouteNumber = impItem.ProcessRouteNumber, |
| | | // PlannedStartTime = impItem.PlannedStartTime, |
| | | // PlannedEndTime = impItem.PlannedEndTime, |
| | | // TeamInfo = impItem.TeamInfo, |
| | | // Timestamp = impItem.Timestamp, |
| | | // Remark = impItem.Remark, |
| | | |
| | | // }; |
| | | |
| | | // workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto)); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // // 新增 |
| | | // foreach (var workPlanDto in workPlanCreateDtos) |
| | | // { |
| | | // try |
| | | // { |
| | | // await CreateAsync(workPlanDto.Item); |
| | | // } |
| | | // catch (Exception e) |
| | | // { |
| | | // var errorMsg = $"导入失败!配置,第{workPlanDto.RowIndex}行:{e.Message},终止导入"; |
| | | // throw new UserFriendlyException(errorMsg); |
| | | // } |
| | | // } |
| | | |
| | | // // 更新 |
| | | // foreach (var workPlanDto in workPlanUpdateDtos) |
| | | // { |
| | | // try |
| | | // { |
| | | // await UpdateAsync(workPlanDto.Id, workPlanDto.Item); |
| | | // } |
| | | // catch (Exception e) |
| | | // { |
| | | // var errorMsg = $"导入失败!配置,第{workPlanDto.RowIndex}行:{e.Message},终止导入"; |
| | | // throw new UserFriendlyException(errorMsg); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 导出作业计划表 |
| | |
| | | ["配置"] = ExportHelper.ConvertListToExportData(result), |
| | | }; |
| | | |
| | | var fileName = result.Count > 1 ? "作业计划表列表" : result.Count == 1 ? result[0]?.TaskCode : "WorkPlan模版"; |
| | | var fileName = "作业计划"; |
| | | return (sheets, fileName); |
| | | } |
| | | |
| | |
| | | protected Task CheckCreateOrUpdateDtoAsync(WorkPlanCreateOrUpdateDtoBase input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | Check.NotNullOrWhiteSpace(input.TaskCode, "任务编码", 64); |
| | | Check.NotNullOrWhiteSpace(input.OrgMaterialCode, "原料编号", 64); |
| | | Check.NotNull(input.HasMainSignature, "是否有主签"); |
| | | Check.NotNull(input.Quantity, "包括数量"); |
| | | Check.NotNullOrWhiteSpace(input.TaskCode, "任务编码", 256); |
| | | Check.NotNull(input.Length, "长度(mm)"); |
| | | Check.NotNull(input.MarkingPosition, "打码位置"); |
| | | Check.NotNull(input.CuttingPosition, "切割位置"); |
| | | Check.NotNull(input.Quantity, "管段数量"); |
| | | Check.NotNull(input.FlangeThickness, "法兰厚度(mm)"); |
| | | Check.NotNull(input.FlangeInnerDiameter, "法兰直径(mm)"); |
| | | Check.NotNull(input.PipeDiameter, "套管长度(mm)"); |
| | | Check.NotNull(input.PipeWallThickness, "套管直径(mm)"); |
| | | Check.NotNull(input.OuterDiameter, "外径(mm)"); |
| | | Check.NotNull(input.Thickness, "壁厚(mm)"); |
| | | Check.NotNull(input.HasMainSignature, "是否主支管"); |
| | | |
| | | return Task.CompletedTask; |
| | | } |