schangxiang@126.com
2025-05-10 fdf4cdbf9723d9d05938fe56d2014769dd7ece4c
修复 模糊查询bug
已添加8个文件
已修改22个文件
已删除4个文件
5133 ■■■■ 文件已修改
CommonDLL/CmsQueryExtensions.dll 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs 570 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs 288 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs 783 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/EntityTypeBuilderExtensions.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/EntityTypeBuilderExtensionsForRecord.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/MyFullAuditedAggregateRoot.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/MyFullAuditedAggregateRootForRecord.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/WorkPlan.cs 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkPlan.cs 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250427055701_InitialCreate.Designer.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250427055701_InitialCreate.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250507025649_Update1.Designer.cs 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250507025649_Update1.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250510023811_Update1.Designer.cs 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250510023811_Update1.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs 306 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMS.Plugin.PipeLineLems.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkPlan导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/File/GenerateCodeConfigParamFiles/祥子的作业计划表配置文本(模糊查询自动版).txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityModeDrawer_Generate.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.Designer.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/CommonHelper.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/ListHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/PredicateExtensions.cs 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/CmsQueryExtensions.dll
Binary files differ
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs
@@ -54,14 +54,134 @@
        public SearchFilterModeEnum TaskCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åŽŸæ–™ç¼–å·
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string OrgMaterialCode { get; set; }
        public string DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™ç¼–å·-查询关系运算符
        /// åŽŸæ–™æ ‡è¯†-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum OrgMaterialCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum DataIdentifier_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åŽŸæ–™åž‹å·
        /// </summary>
        public string MaterialMode { get; set; }
        /// <summary>
        /// åŽŸæ–™åž‹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialMode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é•¿åº¦(mm)
        /// </summary>
        public decimal?  Length { get; set; }
        /// <summary>
        /// é•¿åº¦(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Length_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码内容-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MarkingContent_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        public decimal?  MarkingPosition { get; set; }
        /// <summary>
        /// æ‰“码位置-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MarkingPosition_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        public decimal?  CuttingPosition { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CuttingPosition_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// ç®¡æ®µæ•°é‡
        /// </summary>
        public int?  Quantity { get; set; }
        /// <summary>
        /// ç®¡æ®µæ•°é‡-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Quantity_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ³•兰厚度(mm)
        /// </summary>
        public decimal?  FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰厚度(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum FlangeThickness_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ³•兰直径(mm)
        /// </summary>
        public decimal?  FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰直径(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum FlangeInnerDiameter_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ³•兰公称压力
        /// </summary>
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// æ³•兰公称压力-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum WeldingHeatInput_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ³•兰冲码内容
        /// </summary>
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// æ³•兰冲码内容-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeAllowableStress_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å¥—管长度(mm)
        /// </summary>
        public decimal?  PipeDiameter { get; set; }
        /// <summary>
        /// å¥—管长度(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeDiameter_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å¥—管直径(mm)
        /// </summary>
        public decimal?  PipeWallThickness { get; set; }
        /// <summary>
        /// å¥—管直径(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeWallThickness_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å·¥åŽ‚ä»£ç 
@@ -144,22 +264,12 @@
        public SearchFilterModeEnum PreSerialNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DataIdentifier_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡è§„格码
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡è§„格码-查询关系运算符
        /// ç®¡æ®µç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
@@ -174,24 +284,24 @@
        public SearchFilterModeEnum PipeSectionName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å¤–径
        /// å¤–径(mm)
        /// </summary>
        public string OuterDiameter { get; set; }
        public decimal?  OuterDiameter { get; set; }
        /// <summary>
        /// å¤–径-查询关系运算符
        /// å¤–径(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum OuterDiameter_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å¡å£
        /// å£åŽš(mm)
        /// </summary>
        public string Bevel { get; set; }
        public decimal?  Thickness { get; set; }
        /// <summary>
        /// å¡å£-查询关系运算符
        /// å£åŽš(mm)-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Bevel_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum Thickness_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æè´¨
@@ -204,252 +314,22 @@
        public SearchFilterModeEnum Material_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é•¿åº¦
        /// </summary>
        public string Length { get; set; }
        /// <summary>
        /// é•¿åº¦-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Length_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ‰“孔位
        /// </summary>
        public string DrillingPosition { get; set; }
        /// <summary>
        /// æ‰“孔位-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DrillingPosition_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç›¸è´¯
        /// </summary>
        public string Intersecting { get; set; }
        /// <summary>
        /// ç›¸è´¯-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Intersecting_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æŽ¥å£è¦æ±‚
        /// </summary>
        public string InterfaceRequirement { get; set; }
        /// <summary>
        /// æŽ¥å£è¦æ±‚-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum InterfaceRequirement_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾
        /// æ˜¯å¦ä¸»æ”¯ç®¡
        /// </summary>
        public bool?  HasMainSignature { get; set; }
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾-查询关系运算符
        /// æ˜¯å¦ä¸»æ”¯ç®¡-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum HasMainSignature_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// åŒ…括数量
        /// </summary>
        public int?  Quantity { get; set; }
        /// <summary>
        /// åŒ…括数量-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Quantity_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码内容-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MarkingContent_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶
        /// </summary>
        public string CuttingFile { get; set; }
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CuttingFile_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯å¤–径
        /// </summary>
        public string BranchOuterDiameter { get; set; }
        /// <summary>
        /// æ”¯å¤–径-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchOuterDiameter_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯ç®¡å£åŽš
        /// </summary>
        public string BranchWallThickness { get; set; }
        /// <summary>
        /// æ”¯ç®¡å£åŽš-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchWallThickness_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯ç®¡æè´¨
        /// </summary>
        public string BranchMaterial { get; set; }
        /// <summary>
        /// æ”¯ç®¡æè´¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchMaterial_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„
        /// </summary>
        public string BranchPortRadius { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchPortRadius_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度
        /// </summary>
        public string BranchPortAngle { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchPortAngle_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚
        /// </summary>
        public string BranchPortRequirement { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum BranchPortRequirement_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹
        /// </summary>
        public string IntersectingLineType { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IntersectingLineType_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«
        /// </summary>
        public string IntersectingLineCategory { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IntersectingLineCategory_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æˆå“å›¾å¹…
        /// </summary>
        public string FinishedProductScale { get; set; }
        /// <summary>
        /// æˆå“å›¾å¹…-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum FinishedProductScale_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ³•兰厚度
        /// </summary>
        public string FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰厚度-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum FlangeThickness_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ³•兰内径
        /// </summary>
        public string FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰内径-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum FlangeInnerDiameter_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥
        /// </summary>
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum WeldingHeatInput_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡é“允许应力
        /// </summary>
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// ç®¡é“允许应力-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeAllowableStress_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡å¾„
        /// </summary>
        public string PipeDiameter { get; set; }
        /// <summary>
        /// ç®¡å¾„-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeDiameter_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡é“壁厚
        /// </summary>
        public string PipeWallThickness { get; set; }
        /// <summary>
        /// ç®¡é“壁厚-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeWallThickness_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// VR数据
        /// </summary>
        public string VRData { get; set; }
        /// <summary>
        /// VR数据-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum VRData_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号-查询关系运算符
        /// å·¥è‰ºæµå‘编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessRouteNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
@@ -470,44 +350,128 @@
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        public string TimeInfo { get; set; }
        public string TeamInfo { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯-查询关系运算符
        /// ç­ç»„信息-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum TimeInfo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum TeamInfo_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// æ—¶é—´æˆ³
        /// </summary>
        public string RedundantField1 { get; set; }
        public string Timestamp { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// æ—¶é—´æˆ³-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum RedundantField1_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public SearchFilterModeEnum Timestamp_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public string RedundantField2 { get; set; }
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> CreationTime { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// åˆ›å»ºäººID
        /// </summary>
        public SearchFilterModeEnum RedundantField2_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public string CreatorId { get; set; }
        /// <summary>
        ///
        /// åˆ›å»ºäººID-查询关系运算符
        /// </summary>
        public string RedundantField3 { get; set; }
        public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// -查询关系运算符
        /// ä¿®æ”¹æ—¶é—´
        /// </summary>
        public SearchFilterModeEnum RedundantField3_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> LastModificationTime { get; set; }
        /// <summary>
        /// ä¿®æ”¹äººID
        /// </summary>
        public string LastModifierId { get; set; }
        /// <summary>
        /// ä¿®æ”¹äººID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ˜¯å¦åˆ é™¤
        /// </summary>
        public bool?  IsDeleted { get; set; }
        /// <summary>
        /// æ˜¯å¦åˆ é™¤-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// åˆ é™¤äººID
        /// </summary>
        public string DeleterId { get; set; }
        /// <summary>
        /// åˆ é™¤äººID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> DeletionTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        /// </summary>
        public string CreatorName { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CreatorName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ä¿®æ”¹äºº
        /// </summary>
        public string LastModifierName { get; set; }
        /// <summary>
        /// ä¿®æ”¹äºº-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ“ä½œå¤‡æ³¨
        /// </summary>
        public string OperationRemark { get; set; }
        /// <summary>
        /// æ“ä½œå¤‡æ³¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum OperationRemark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åˆ é™¤å¤‡æ³¨
        /// </summary>
        public string DeleteRemark { get; set; }
        /// <summary>
        /// åˆ é™¤å¤‡æ³¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleteRemark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æŽ’序
@@ -540,68 +504,34 @@
        public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        ///
        /// æ‰©å±•字段1
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> CreationTime { get; set; }
        public string ExtraField1 { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段1-查询关系运算符
        /// </summary>
        public string CreatorId { get; set; }
        public SearchFilterModeEnum ExtraField1_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// -查询关系运算符
        /// æ‰©å±•字段2
        /// </summary>
        public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        public string ExtraField2 { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段2-查询关系运算符
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> LastModificationTime { get; set; }
        public SearchFilterModeEnum ExtraField2_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// æ‰©å±•字段3
        /// </summary>
        public string LastModifierId { get; set; }
        public string ExtraField3 { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// æ‰©å±•字段3-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public bool?  IsDeleted { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        ///
        /// </summary>
        public string DeleterId { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> DeletionTime { get; set; }
        public SearchFilterModeEnum ExtraField3_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs
@@ -15,9 +15,69 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// åŽŸæ–™ç¼–å·
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string OrgMaterialCode { get; set; }
        public string? DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™åž‹å·
        /// </summary>
        public string? MaterialMode { get; set; }
        /// <summary>
        /// é•¿åº¦(mm)
        /// </summary>
        public decimal Length { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string? MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        public decimal MarkingPosition { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        public decimal CuttingPosition { get; set; }
        /// <summary>
        /// ç®¡æ®µæ•°é‡
        /// </summary>
        public int Quantity { get; set; }
        /// <summary>
        /// æ³•兰厚度(mm)
        /// </summary>
        public decimal FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰直径(mm)
        /// </summary>
        public decimal FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰公称压力
        /// </summary>
        public string? WeldingHeatInput { get; set; }
        /// <summary>
        /// æ³•兰冲码内容
        /// </summary>
        public string? PipeAllowableStress { get; set; }
        /// <summary>
        /// å¥—管长度(mm)
        /// </summary>
        public decimal PipeDiameter { get; set; }
        /// <summary>
        /// å¥—管直径(mm)
        /// </summary>
        public decimal PipeWallThickness { get; set; }
        /// <summary>
        /// å·¥åŽ‚ä»£ç 
@@ -60,12 +120,7 @@
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string? DataIdentifier { get; set; }
        /// <summary>
        /// ç®¡è§„格码
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
@@ -75,14 +130,14 @@
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径
        /// å¤–径(mm)
        /// </summary>
        public string? OuterDiameter { get; set; }
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å¡å£
        /// å£åŽš(mm)
        /// </summary>
        public string? Bevel { get; set; }
        public decimal Thickness { get; set; }
        /// <summary>
        /// æè´¨
@@ -90,127 +145,12 @@
        public string? Material { get; set; }
        /// <summary>
        /// é•¿åº¦
        /// </summary>
        public string? Length { get; set; }
        /// <summary>
        /// æ‰“孔位
        /// </summary>
        public string? DrillingPosition { get; set; }
        /// <summary>
        /// ç›¸è´¯
        /// </summary>
        public string? Intersecting { get; set; }
        /// <summary>
        /// æŽ¥å£è¦æ±‚
        /// </summary>
        public string? InterfaceRequirement { get; set; }
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾
        /// æ˜¯å¦ä¸»æ”¯ç®¡
        /// </summary>
        public bool HasMainSignature { get; set; }
        /// <summary>
        /// åŒ…括数量
        /// </summary>
        public int Quantity { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string? MarkingContent { get; set; }
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶
        /// </summary>
        public string? CuttingFile { get; set; }
        /// <summary>
        /// æ”¯å¤–径
        /// </summary>
        public string? BranchOuterDiameter { get; set; }
        /// <summary>
        /// æ”¯ç®¡å£åŽš
        /// </summary>
        public string? BranchWallThickness { get; set; }
        /// <summary>
        /// æ”¯ç®¡æè´¨
        /// </summary>
        public string? BranchMaterial { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„
        /// </summary>
        public string? BranchPortRadius { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度
        /// </summary>
        public string? BranchPortAngle { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚
        /// </summary>
        public string? BranchPortRequirement { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹
        /// </summary>
        public string? IntersectingLineType { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«
        /// </summary>
        public string? IntersectingLineCategory { get; set; }
        /// <summary>
        /// æˆå“å›¾å¹…
        /// </summary>
        public string? FinishedProductScale { get; set; }
        /// <summary>
        /// æ³•兰厚度
        /// </summary>
        public string? FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰内径
        /// </summary>
        public string? FlangeInnerDiameter { get; set; }
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥
        /// </summary>
        public string? WeldingHeatInput { get; set; }
        /// <summary>
        /// ç®¡é“允许应力
        /// </summary>
        public string? PipeAllowableStress { get; set; }
        /// <summary>
        /// ç®¡å¾„
        /// </summary>
        public string? PipeDiameter { get; set; }
        /// <summary>
        /// ç®¡é“壁厚
        /// </summary>
        public string? PipeWallThickness { get; set; }
        /// <summary>
        /// VR数据
        /// </summary>
        public string? VRData { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
@@ -225,24 +165,39 @@
        public DateTime? PlannedEndTime { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        public string? TimeInfo { get; set; }
        public string? TeamInfo { get; set; }
        /// <summary>
        ///
        /// æ—¶é—´æˆ³
        /// </summary>
        public string? RedundantField1 { get; set; }
        public string? Timestamp { get; set; }
        /// <summary>
        ///
        /// åˆ›å»ºäººID
        /// </summary>
        public string? RedundantField2 { get; set; }
        public string? CreatorId { get; set; }
        /// <summary>
        ///
        /// ä¿®æ”¹äººID
        /// </summary>
        public string? RedundantField3 { get; set; }
        public string? LastModifierId { get; set; }
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        public DateTime? DeletionTime { get; set; }
        /// <summary>
        /// æ“ä½œå¤‡æ³¨
        /// </summary>
        public string? OperationRemark { get; set; }
        /// <summary>
        /// åˆ é™¤å¤‡æ³¨
        /// </summary>
        public string? DeleteRemark { get; set; }
        /// <summary>
        /// æŽ’序
@@ -260,14 +215,19 @@
        public bool? IsDisabled { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段1
        /// </summary>
        public string? CreatorId { get; set; }
        public string? ExtraField1 { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段2
        /// </summary>
        public string? LastModifierId { get; set; }
        public string? ExtraField2 { get; set; }
        /// <summary>
        /// æ‰©å±•字段3
        /// </summary>
        public string? ExtraField3 { get; set; }
 
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs
@@ -18,9 +18,69 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// åŽŸæ–™ç¼–å·
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string OrgMaterialCode { get; set; }
        public string? DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™åž‹å·
        /// </summary>
        public string? MaterialMode { get; set; }
        /// <summary>
        /// é•¿åº¦(mm)
        /// </summary>
        public decimal Length { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string? MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        public decimal MarkingPosition { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        public decimal CuttingPosition { get; set; }
        /// <summary>
        /// ç®¡æ®µæ•°é‡
        /// </summary>
        public int Quantity { get; set; }
        /// <summary>
        /// æ³•兰厚度(mm)
        /// </summary>
        public decimal FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰直径(mm)
        /// </summary>
        public decimal FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰公称压力
        /// </summary>
        public string? WeldingHeatInput { get; set; }
        /// <summary>
        /// æ³•兰冲码内容
        /// </summary>
        public string? PipeAllowableStress { get; set; }
        /// <summary>
        /// å¥—管长度(mm)
        /// </summary>
        public decimal PipeDiameter { get; set; }
        /// <summary>
        /// å¥—管直径(mm)
        /// </summary>
        public decimal PipeWallThickness { get; set; }
        /// <summary>
        /// å·¥åŽ‚ä»£ç 
@@ -63,12 +123,7 @@
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string? DataIdentifier { get; set; }
        /// <summary>
        /// ç®¡è§„格码
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
@@ -78,14 +133,14 @@
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径
        /// å¤–径(mm)
        /// </summary>
        public string? OuterDiameter { get; set; }
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å¡å£
        /// å£åŽš(mm)
        /// </summary>
        public string? Bevel { get; set; }
        public decimal Thickness { get; set; }
        /// <summary>
        /// æè´¨
@@ -93,127 +148,12 @@
        public string? Material { get; set; }
        /// <summary>
        /// é•¿åº¦
        /// </summary>
        public string? Length { get; set; }
        /// <summary>
        /// æ‰“孔位
        /// </summary>
        public string? DrillingPosition { get; set; }
        /// <summary>
        /// ç›¸è´¯
        /// </summary>
        public string? Intersecting { get; set; }
        /// <summary>
        /// æŽ¥å£è¦æ±‚
        /// </summary>
        public string? InterfaceRequirement { get; set; }
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾
        /// æ˜¯å¦ä¸»æ”¯ç®¡
        /// </summary>
        public bool HasMainSignature { get; set; }
        /// <summary>
        /// åŒ…括数量
        /// </summary>
        public int Quantity { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string? MarkingContent { get; set; }
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶
        /// </summary>
        public string? CuttingFile { get; set; }
        /// <summary>
        /// æ”¯å¤–径
        /// </summary>
        public string? BranchOuterDiameter { get; set; }
        /// <summary>
        /// æ”¯ç®¡å£åŽš
        /// </summary>
        public string? BranchWallThickness { get; set; }
        /// <summary>
        /// æ”¯ç®¡æè´¨
        /// </summary>
        public string? BranchMaterial { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„
        /// </summary>
        public string? BranchPortRadius { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度
        /// </summary>
        public string? BranchPortAngle { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚
        /// </summary>
        public string? BranchPortRequirement { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹
        /// </summary>
        public string? IntersectingLineType { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«
        /// </summary>
        public string? IntersectingLineCategory { get; set; }
        /// <summary>
        /// æˆå“å›¾å¹…
        /// </summary>
        public string? FinishedProductScale { get; set; }
        /// <summary>
        /// æ³•兰厚度
        /// </summary>
        public string? FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰内径
        /// </summary>
        public string? FlangeInnerDiameter { get; set; }
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥
        /// </summary>
        public string? WeldingHeatInput { get; set; }
        /// <summary>
        /// ç®¡é“允许应力
        /// </summary>
        public string? PipeAllowableStress { get; set; }
        /// <summary>
        /// ç®¡å¾„
        /// </summary>
        public string? PipeDiameter { get; set; }
        /// <summary>
        /// ç®¡é“壁厚
        /// </summary>
        public string? PipeWallThickness { get; set; }
        /// <summary>
        /// VR数据
        /// </summary>
        public string? VRData { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
@@ -228,24 +168,79 @@
        public DateTime? PlannedEndTime { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        public string? TimeInfo { get; set; }
        public string? TeamInfo { get; set; }
        /// <summary>
        ///
        /// æ—¶é—´æˆ³
        /// </summary>
        public string? RedundantField1 { get; set; }
        public string? Timestamp { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•属性
        /// </summary>
        public string? RedundantField2 { get; set; }
        public ExtraPropertyDictionary? ExtraProperties { get; set; }
        /// <summary>
        ///
        /// å¹¶å‘戳
        /// </summary>
        public string? RedundantField3 { get; set; }
        public string? ConcurrencyStamp { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public DateTime CreationTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººID
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        /// ä¿®æ”¹æ—¶é—´
        /// </summary>
        public DateTime? LastModificationTime { get; set; }
        /// <summary>
        /// ä¿®æ”¹äººID
        /// </summary>
        public string? LastModifierId { get; set; }
        /// <summary>
        /// æ˜¯å¦åˆ é™¤
        /// </summary>
        public bool IsDeleted { get; set; }
        /// <summary>
        /// åˆ é™¤äººID
        /// </summary>
        public string? DeleterId { get; set; }
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        public DateTime? DeletionTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        /// </summary>
        public string? CreatorName { get; set; }
        /// <summary>
        /// ä¿®æ”¹äºº
        /// </summary>
        public string? LastModifierName { get; set; }
        /// <summary>
        /// æ“ä½œå¤‡æ³¨
        /// </summary>
        public string? OperationRemark { get; set; }
        /// <summary>
        /// åˆ é™¤å¤‡æ³¨
        /// </summary>
        public string? DeleteRemark { get; set; }
        /// <summary>
        /// æŽ’序
@@ -263,49 +258,19 @@
        public bool? IsDisabled { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段1
        /// </summary>
        public ExtraPropertyDictionary? ExtraProperties { get; set; }
        public string? ExtraField1 { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段2
        /// </summary>
        public string? ConcurrencyStamp { get; set; }
        public string? ExtraField2 { get; set; }
        /// <summary>
        ///
        /// æ‰©å±•字段3
        /// </summary>
        public DateTime CreationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime? LastModificationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? LastModifierId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool IsDeleted { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? DeleterId { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime? DeletionTime { get; set; }
        public string? ExtraField3 { get; set; }
 
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs
@@ -17,10 +17,82 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// åŽŸæ–™ç¼–å·
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        [ExcelColumn(Name = "原料编号", Width = 25)]
        public string OrgMaterialCode { get; set; }
        [ExcelColumn(Name = "原料标识", Width = 25)]
        public string DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™åž‹å·
        /// </summary>
        [ExcelColumn(Name = "原料型号", Width = 25)]
        public string MaterialMode { get; set; }
        /// <summary>
        /// é•¿åº¦(mm)
        /// </summary>
        [ExcelColumn(Name = "长度(mm)", Width = 25)]
        public decimal Length { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        [ExcelColumn(Name = "打码内容", Width = 25)]
        public string MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        [ExcelColumn(Name = "打码位置", Width = 25)]
        public decimal MarkingPosition { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        [ExcelColumn(Name = "切割位置", Width = 25)]
        public decimal CuttingPosition { get; set; }
        /// <summary>
        /// ç®¡æ®µæ•°é‡
        /// </summary>
        [ExcelColumn(Name = "管段数量", Width = 25)]
        public int Quantity { get; set; }
        /// <summary>
        /// æ³•兰厚度(mm)
        /// </summary>
        [ExcelColumn(Name = "法兰厚度(mm)", Width = 25)]
        public decimal FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰直径(mm)
        /// </summary>
        [ExcelColumn(Name = "法兰直径(mm)", Width = 25)]
        public decimal FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰公称压力
        /// </summary>
        [ExcelColumn(Name = "法兰公称压力", Width = 25)]
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// æ³•兰冲码内容
        /// </summary>
        [ExcelColumn(Name = "法兰冲码内容", Width = 25)]
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// å¥—管长度(mm)
        /// </summary>
        [ExcelColumn(Name = "套管长度(mm)", Width = 25)]
        public decimal PipeDiameter { get; set; }
        /// <summary>
        /// å¥—管直径(mm)
        /// </summary>
        [ExcelColumn(Name = "套管直径(mm)", Width = 25)]
        public decimal PipeWallThickness { get; set; }
        /// <summary>
        /// å·¥åŽ‚ä»£ç 
@@ -71,15 +143,9 @@
        public string PreSerialNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// ç®¡æ®µç¼–码
        /// </summary>
        [ExcelColumn(Name = "原料标识", Width = 25)]
        public string DataIdentifier { get; set; }
        /// <summary>
        /// ç®¡è§„格码
        /// </summary>
        [ExcelColumn(Name = "管规格码", Width = 25)]
        [ExcelColumn(Name = "管段编码", Width = 25)]
        public string PipeSpecCode { get; set; }
        /// <summary>
@@ -89,16 +155,16 @@
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径
        /// å¤–径(mm)
        /// </summary>
        [ExcelColumn(Name = "外径", Width = 25)]
        public string OuterDiameter { get; set; }
        [ExcelColumn(Name = "外径(mm)", Width = 25)]
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å¡å£
        /// å£åŽš(mm)
        /// </summary>
        [ExcelColumn(Name = "坡口", Width = 25)]
        public string Bevel { get; set; }
        [ExcelColumn(Name = "壁厚(mm)", Width = 25)]
        public decimal Thickness { get; set; }
        /// <summary>
        /// æè´¨
@@ -107,153 +173,15 @@
        public string Material { get; set; }
        /// <summary>
        /// é•¿åº¦
        /// æ˜¯å¦ä¸»æ”¯ç®¡
        /// </summary>
        [ExcelColumn(Name = "长度", Width = 25)]
        public string Length { get; set; }
        /// <summary>
        /// æ‰“孔位
        /// </summary>
        [ExcelColumn(Name = "打孔位", Width = 25)]
        public string DrillingPosition { get; set; }
        /// <summary>
        /// ç›¸è´¯
        /// </summary>
        [ExcelColumn(Name = "相贯", Width = 25)]
        public string Intersecting { get; set; }
        /// <summary>
        /// æŽ¥å£è¦æ±‚
        /// </summary>
        [ExcelColumn(Name = "接口要求", Width = 25)]
        public string InterfaceRequirement { get; set; }
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾
        /// </summary>
        [ExcelColumn(Name = "是否有主签", Width = 25)]
        [ExcelColumn(Name = "是否主支管", Width = 25)]
        public bool HasMainSignature { get; set; }
        /// <summary>
        /// åŒ…括数量
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        [ExcelColumn(Name = "包括数量", Width = 25)]
        public int Quantity { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        [ExcelColumn(Name = "打码内容", Width = 25)]
        public string MarkingContent { get; set; }
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶
        /// </summary>
        [ExcelColumn(Name = "切割文件", Width = 25)]
        public string CuttingFile { get; set; }
        /// <summary>
        /// æ”¯å¤–径
        /// </summary>
        [ExcelColumn(Name = "支外径", Width = 25)]
        public string BranchOuterDiameter { get; set; }
        /// <summary>
        /// æ”¯ç®¡å£åŽš
        /// </summary>
        [ExcelColumn(Name = "支管壁厚", Width = 25)]
        public string BranchWallThickness { get; set; }
        /// <summary>
        /// æ”¯ç®¡æè´¨
        /// </summary>
        [ExcelColumn(Name = "支管材质", Width = 25)]
        public string BranchMaterial { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„
        /// </summary>
        [ExcelColumn(Name = "支管端口曲率半径", Width = 25)]
        public string BranchPortRadius { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度
        /// </summary>
        [ExcelColumn(Name = "支管端口角度", Width = 25)]
        public string BranchPortAngle { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚
        /// </summary>
        [ExcelColumn(Name = "支管端口要求", Width = 25)]
        public string BranchPortRequirement { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹
        /// </summary>
        [ExcelColumn(Name = "相贯线类型", Width = 25)]
        public string IntersectingLineType { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«
        /// </summary>
        [ExcelColumn(Name = "相贯线类别", Width = 25)]
        public string IntersectingLineCategory { get; set; }
        /// <summary>
        /// æˆå“å›¾å¹…
        /// </summary>
        [ExcelColumn(Name = "成品图幅", Width = 25)]
        public string FinishedProductScale { get; set; }
        /// <summary>
        /// æ³•兰厚度
        /// </summary>
        [ExcelColumn(Name = "法兰厚度", Width = 25)]
        public string FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰内径
        /// </summary>
        [ExcelColumn(Name = "法兰内径", Width = 25)]
        public string FlangeInnerDiameter { get; set; }
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥
        /// </summary>
        [ExcelColumn(Name = "焊接热输入", Width = 25)]
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// ç®¡é“允许应力
        /// </summary>
        [ExcelColumn(Name = "管道允许应力", Width = 25)]
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// ç®¡å¾„
        /// </summary>
        [ExcelColumn(Name = "管径", Width = 25)]
        public string PipeDiameter { get; set; }
        /// <summary>
        /// ç®¡é“壁厚
        /// </summary>
        [ExcelColumn(Name = "管道壁厚", Width = 25)]
        public string PipeWallThickness { get; set; }
        /// <summary>
        /// VR数据
        /// </summary>
        [ExcelColumn(Name = "VR数据", Width = 25)]
        public string VRData { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号
        /// </summary>
        [ExcelColumn(Name = "工艺路线编号", Width = 25)]
        [ExcelColumn(Name = "工艺流向编号", Width = 25)]
        public string ProcessRouteNumber { get; set; }
        /// <summary>
@@ -269,46 +197,46 @@
        public DateTime PlannedEndTime { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        [ExcelColumn(Name = "时间信息", Width = 25)]
        public string TimeInfo { get; set; }
        [ExcelColumn(Name = "班组信息", Width = 25)]
        public string TeamInfo { get; set; }
        /// <summary>
        ///
        /// æ—¶é—´æˆ³
        /// </summary>
        [ExcelColumn(Name = "", Width = 25)]
        public string RedundantField1 { get; set; }
        [ExcelColumn(Name = "时间戳", Width = 25)]
        public string Timestamp { get; set; }
        /// <summary>
        ///
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        [ExcelColumn(Name = "", Width = 25)]
        public string RedundantField2 { get; set; }
        [ExcelColumn(Name = "创建时间", Width = 25)]
        public DateTime CreationTime { get; set; }
        /// <summary>
        ///
        /// ä¿®æ”¹æ—¶é—´
        /// </summary>
        [ExcelColumn(Name = "", Width = 25)]
        public string RedundantField3 { get; set; }
        [ExcelColumn(Name = "修改时间", Width = 25)]
        public DateTime LastModificationTime { get; set; }
        /// <summary>
        /// æŽ’序
        /// åˆ›å»ºäºº
        /// </summary>
        [ExcelColumn(Name = "排序", Width = 25)]
        public int Sort { get; set; }
        [ExcelColumn(Name = "创建人", Width = 25)]
        public string CreatorName { get; set; }
        /// <summary>
        /// ä¿®æ”¹äºº
        /// </summary>
        [ExcelColumn(Name = "修改人", Width = 25)]
        public string LastModifierName { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [ExcelColumn(Name = "备注", Width = 25)]
        public string Remark { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        [ExcelColumn(Name = "是否禁用", Width = 25)]
        public bool? IsDisabled { get; set; }
 
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
@@ -1,164 +1,164 @@
using CMS.Plugin.FormulaManagement.Abstractions;
using CMS.Plugin.OrderManagement.Abstractions;
using CMS.Plugin.OrderManagement.Abstractions.Enums;
using CMS.Plugin.OrderManagement.Abstractions.Models;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CMS.Plugin.ProductManagement.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
//using CMS.Plugin.FormulaManagement.Abstractions;
//using CMS.Plugin.OrderManagement.Abstractions;
//using CMS.Plugin.OrderManagement.Abstractions.Enums;
//using CMS.Plugin.OrderManagement.Abstractions.Models;
//using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
//using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
//using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
//using CMS.Plugin.ProductManagement.Abstractions;
//using Microsoft.Extensions.DependencyInjection;
//using Volo.Abp;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
//namespace CMS.Plugin.PipeLineLems.Application.Implements;
public class MesAppService : CMSPluginAppService, IMesAppService
{
    private readonly IServiceProvider _serviceProvider;
    private readonly IWorkPlanAppService _workPlanAppService;
//public class MesAppService : CMSPluginAppService, IMesAppService
//{
//    private readonly IServiceProvider _serviceProvider;
//    private readonly IWorkPlanAppService _workPlanAppService;
    //private readonly IEventBus _eventBus;
//    //private readonly IEventBus _eventBus;
    public MesAppService(IServiceProvider serviceProvider
        , IWorkPlanAppService workPlanAppService
        //, IEventBus eventBus
        )
    {
        _serviceProvider = serviceProvider;
        // _eventBus = eventBus;
        _workPlanAppService = workPlanAppService;
    }
//    public MesAppService(IServiceProvider serviceProvider
//        , IWorkPlanAppService workPlanAppService
//        //, IEventBus eventBus
//        )
//    {
//        _serviceProvider = serviceProvider;
//        // _eventBus = eventBus;
//        _workPlanAppService = workPlanAppService;
//    }
    public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input)
    {
        if (input == null)
        {
            throw new UserFriendlyException("输入参数不能为空");
        }
//    public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input)
//    {
//        if (input == null)
//        {
//            throw new UserFriendlyException("输入参数不能为空");
//        }
        if (input.Count == 0)
        {
            throw new UserFriendlyException("输入参数Data不能为空");
        }
//        if (input.Count == 0)
//        {
//            throw new UserFriendlyException("输入参数Data不能为空");
//        }
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
        var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
        var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
        List<OrderModel> orderModels = new List<OrderModel>();
        //按照任务编号分组
        var groupTask = input.GroupBy(x => x.TaskCode);
        foreach (var gTask in groupTask)
        {
            var taskCode = gTask.Key;
            var order = await orderManager.GetByCodeAsync(taskCode);
            if (order != null)
            {
                throw new UserFriendlyException($"任务编号[{taskCode}]已存在");
            }
//        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
//        var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
//        var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
//        List<OrderModel> orderModels = new List<OrderModel>();
//        //按照任务编号分组
//        var groupTask = input.GroupBy(x => x.TaskCode);
//        foreach (var gTask in groupTask)
//        {
//            var taskCode = gTask.Key;
//            var order = await orderManager.GetByCodeAsync(taskCode);
//            if (order != null)
//            {
//                throw new UserFriendlyException($"任务编号[{taskCode}]已存在");
//            }
            //var product = await productProvider.FindByNameAsync(orderItem.PipeSectionName);
            //if (product == null)
            //{
            //    throw new UserFriendlyException($"产品名称[{orderItem.PipeSectionName}]不存在");
            //}
//            //var product = await productProvider.FindByNameAsync(orderItem.PipeSectionName);
//            //if (product == null)
//            //{
//            //    throw new UserFriendlyException($"产品名称[{orderItem.PipeSectionName}]不存在");
//            //}
            //var formula = await formulaProvider.GetFormulaAsync(product.Id);
            //if (formula == null)
            //{
            //    throw new UserFriendlyException($"产品型号[{orderItem.MaterialCode}]无关联配方");
            //}
            //首先要创建 æ‰“码切割的工单
            var productForCut = await productProvider.FindByNameAsync("切割原料管");
            if (productForCut == null)
            {
                throw new UserFriendlyException($"产品名称[切割原料管]不存在");
            }
            var formulaForCut = await formulaProvider.GetFormulaAsync(productForCut.Id);
            if (formulaForCut == null)
            {
                throw new UserFriendlyException($"产品名称[切割原料管]无关联配方");
            }
            //分组数据
            var group = gTask.ToList().GroupBy(x => x.DataIdentifier);
            foreach (var item in group)
            {
                OrderModel orderModelForCut = new OrderModel()
                {
                    Id = Guid.NewGuid(),
                    Code = "Cut_" + taskCode,
                    Source = "APS推送",
                    PlanStartTime = gTask.ToList().First().PlannedStartTime,
                    PlanFinishTime = gTask.ToList().First().PlannedEndTime,
                    PlanQty = (ulong)item.ToList().Count,
                    Status = OrderStatus.NotActive,
                    Product = new AssociationProductModel() { Id = productForCut.Id, Name = productForCut.Name, Model = productForCut.Model, ShortNumber = productForCut.ShortNumber },
                    Formula = new AssociationFormulaModel() { Id = formulaForCut.Id, Code = formulaForCut.Code, Name = formulaForCut.Name }
                };
                orderModelForCut.ExtraProperties["OuterDiameter"] = gTask.ToList().First().OuterDiameter;//外径
                orderModelForCut.ExtraProperties["Material"] = gTask.ToList().First().Material;//材质
                orderModelForCut.ExtraProperties["Length"] = gTask.ToList().First().Length;//长度
//            //var formula = await formulaProvider.GetFormulaAsync(product.Id);
//            //if (formula == null)
//            //{
//            //    throw new UserFriendlyException($"产品型号[{orderItem.MaterialCode}]无关联配方");
//            //}
//            //首先要创建 æ‰“码切割的工单
//            var productForCut = await productProvider.FindByNameAsync("切割原料管");
//            if (productForCut == null)
//            {
//                throw new UserFriendlyException($"产品名称[切割原料管]不存在");
//            }
//            var formulaForCut = await formulaProvider.GetFormulaAsync(productForCut.Id);
//            if (formulaForCut == null)
//            {
//                throw new UserFriendlyException($"产品名称[切割原料管]无关联配方");
//            }
//            //分组数据
//            var group = gTask.ToList().GroupBy(x => x.DataIdentifier);
//            foreach (var item in group)
//            {
//                OrderModel orderModelForCut = new OrderModel()
//                {
//                    Id = Guid.NewGuid(),
//                    Code = "Cut_" + taskCode,
//                    Source = "APS推送",
//                    PlanStartTime = gTask.ToList().First().PlannedStartTime,
//                    PlanFinishTime = gTask.ToList().First().PlannedEndTime,
//                    PlanQty = (ulong)item.ToList().Count,
//                    Status = OrderStatus.NotActive,
//                    Product = new AssociationProductModel() { Id = productForCut.Id, Name = productForCut.Name, Model = productForCut.Model, ShortNumber = productForCut.ShortNumber },
//                    Formula = new AssociationFormulaModel() { Id = formulaForCut.Id, Code = formulaForCut.Code, Name = formulaForCut.Name }
//                };
//                orderModelForCut.ExtraProperties["OuterDiameter"] = gTask.ToList().First().OuterDiameter;//外径
//                orderModelForCut.ExtraProperties["Material"] = gTask.ToList().First().Material;//材质
//                orderModelForCut.ExtraProperties["Length"] = gTask.ToList().First().Length;//长度
                var orderForCut = await orderManager.GetByCodeAsync(orderModelForCut.Code);
                if (orderForCut != null)
                {
                    //throw new UserFriendlyException($"工单[{orderModelForCut.Code}]已存在");
                    //不再抛异常,直接跳过
                    break;
                }
//                var orderForCut = await orderManager.GetByCodeAsync(orderModelForCut.Code);
//                if (orderForCut != null)
//                {
//                    //throw new UserFriendlyException($"工单[{orderModelForCut.Code}]已存在");
//                    //不再抛异常,直接跳过
//                    break;
//                }
                var orderModelResultForCut = await orderManager.CreateAsync(orderModelForCut);
                if (orderModelResultForCut == null)
                {
                    throw new UserFriendlyException($"工单[{orderModelForCut.Code}]创建失败");
                }
                orderModels.Add(orderModelResultForCut);
//                var orderModelResultForCut = await orderManager.CreateAsync(orderModelForCut);
//                if (orderModelResultForCut == null)
//                {
//                    throw new UserFriendlyException($"工单[{orderModelForCut.Code}]创建失败");
//                }
//                orderModels.Add(orderModelResultForCut);
                //OrderModel orderModel = new OrderModel();
                //orderModel.Id = Guid.NewGuid();
                //orderModel.Code = orderItem.TaskCode;
                //orderModel.Source = "APS推送";
                //orderModel.Product = new AssociationProductModel() { Id = product.Id, Name = product.Name, Model = product.Model, ShortNumber = product.ShortNumber };
                ////orderModel.Formula = new AssociationFormulaModel() { Id = formula.Id, Code = formula.Code, Name = formula.Name };
                //orderModel.PlanStartTime = orderItem.PlannedStartTime;
                //orderModel.PlanFinishTime = orderItem.PlannedEndTime;
                //orderModel.PlanQty = (ulong?)orderItem.OrderQty;
                //orderModel.Status = OrderStatus.NotActive;
                //orderModel.ExtraProperties["Source"] = "ddd";
                //var source = orderModel.ExtraProperties["Source"];
                //var orderModelResult = await orderManager.CreateAsync(orderModel);
                //if (orderModelResult == null)
                //{
                //    throw new UserFriendlyException($"工单[{orderItem.TaskCode}]创建失败");
                //}
                //orderModels.Add(orderModelResult);
            }
//                //OrderModel orderModel = new OrderModel();
//                //orderModel.Id = Guid.NewGuid();
//                //orderModel.Code = orderItem.TaskCode;
//                //orderModel.Source = "APS推送";
//                //orderModel.Product = new AssociationProductModel() { Id = product.Id, Name = product.Name, Model = product.Model, ShortNumber = product.ShortNumber };
//                ////orderModel.Formula = new AssociationFormulaModel() { Id = formula.Id, Code = formula.Code, Name = formula.Name };
//                //orderModel.PlanStartTime = orderItem.PlannedStartTime;
//                //orderModel.PlanFinishTime = orderItem.PlannedEndTime;
//                //orderModel.PlanQty = (ulong?)orderItem.OrderQty;
//                //orderModel.Status = OrderStatus.NotActive;
//                //orderModel.ExtraProperties["Source"] = "ddd";
//                //var source = orderModel.ExtraProperties["Source"];
//                //var orderModelResult = await orderManager.CreateAsync(orderModel);
//                //if (orderModelResult == null)
//                //{
//                //    throw new UserFriendlyException($"工单[{orderItem.TaskCode}]创建失败");
//                //}
//                //orderModels.Add(orderModelResult);
//            }
        }
//        }
        //保存到表中
        foreach (var item in input)
        {
            var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item);
            insertObj.OrgMaterialCode = "1111";
            insertObj.Sort = 1;
            await _workPlanAppService.CreateAsync(insertObj);
        }
//        //保存到表中
//        foreach (var item in input)
//        {
//            var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item);
//            insertObj.OrgMaterialCode = "1111";
//            insertObj.Sort = 1;
//            await _workPlanAppService.CreateAsync(insertObj);
//        }
        // å‘布事件
        //await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true));
//        // å‘布事件
//        //await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true));
        var response = new MesOrderResponse
        {
            Code = "000000",
            Data = orderModels,
            Fail = false,
            Mesg = "处理成功",
            Success = true,
            Time = DateTime.UtcNow
        };
        return response;
    }
}
//        var response = new MesOrderResponse
//        {
//            Code = "000000",
//            Data = orderModels,
//            Fail = false,
//            Mesg = "处理成功",
//            Success = true,
//            Time = DateTime.UtcNow
//        };
//        return response;
//    }
//}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
@@ -1,127 +1,127 @@
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
/// <summary> 
/// ä½œä¸šè®¡åˆ’表应用服务 
/// </summary> 
public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService
{
    private readonly IWorkPlanRepository workPlanRepository;
public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService
{
    private readonly IWorkPlanRepository workPlanRepository;
    /// <summary> 
    /// Initializes a new instance of the <see cref="WorkPlanAppService"/> class. 
    /// </summary> 
    /// <param name="WorkPlanRepository">The task job repository.</param> 
    public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository)
    {
        workPlanRepository = _WorkPlanRepository;
    }
    public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository)
    {
        workPlanRepository = _WorkPlanRepository;
    }
    /// <summary> 
    /// èŽ·å–æŒ‡å®šä½œä¸šè®¡åˆ’è¡¨ 
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual async Task<WorkPlanDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id));
    }
    public virtual async Task<WorkPlanDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id));
    }
    /// <summary> 
    /// åˆ†é¡µèŽ·å–ä½œä¸šè®¡åˆ’è¡¨ 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public virtual async Task<PagedResultDto<WorkPlanDto>> GetListAsync(GetWorkPlanInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkPlan.Sort);
        }
    public virtual async Task<PagedResultDto<WorkPlanDto>> GetListAsync(GetWorkPlanInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkPlan.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await workPlanRepository.GetCountAsync(whereConditions);
        var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list));
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await workPlanRepository.GetCountAsync(whereConditions);
        var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list));
    }
    /// <summary>  
    /// åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
    /// </summary>  
    /// <param name="input">输入参数</param>  
    /// <returns></returns>  
    private FunReturnResultModel<Expression<Func<WorkPlan, bool>>> DynamicGetQueryParams(GetWorkPlanInput input)
    {
    private FunReturnResultModel<Expression<Func<WorkPlan, bool>>> DynamicGetQueryParams(GetWorkPlanInput input)
    {
        //动态构造查询条件  
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkPlan, GetWorkPlanInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WorkPlan, GetWorkPlanInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        //也可再次自定义构建查询条件  
        Expression<Func<WorkPlan, bool>> extendExpression = a => a.IsDeleted == false;
        Expression<Func<WorkPlan, bool>> extendExpression = a => a.IsDeleted == false;
        // ä½¿ç”¨ System.Linq.PredicateBuilder çš„ And 
        var pres = (System.Linq.Expressions.Expression<Func<WorkPlan, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
        var pres = (System.Linq.Expressions.Expression<Func<WorkPlan, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
    /// <summary> 
    /// æ–°å»ºä½œä¸šè®¡åˆ’表 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await workPlanRepository.NameExistAsync(input.TaskCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
        }
        var maxSort = await workPlanRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await workPlanRepository.InsertAsync(insertObj);
    public virtual async Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await workPlanRepository.NameExistAsync(input.TaskCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
        }
        var maxSort = await workPlanRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        await workPlanRepository.InsertAsync(insertObj);
        //if (input.Sort.HasValue && insertObj.Sort != maxSort) 
        //{ 
        //    await AdjustSortAsync(insertObj.Id, insertObj.Sort); 
        //} 
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(insertObj);
    }
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(insertObj);
    }
    /// <summary> 
    /// æ›´æ–°ä½œä¸šè®¡åˆ’表 
    /// </summary> 
@@ -129,22 +129,34 @@
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public virtual async Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await workPlanRepository.GetAsync(id);
        var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        updateObj.TaskCode = input.TaskCode;
        updateObj.OrgMaterialCode = input.OrgMaterialCode;
    public virtual async Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await workPlanRepository.GetAsync(id);
        var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
                updateObj.TaskCode = input.TaskCode;
        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;
@@ -153,59 +165,32 @@
        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);
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj);
    }
        await workPlanRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj);
    }
    /// <summary> 
    /// å…‹éš†ä½œä¸šè®¡åˆ’表 
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids)
    {
    public async Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids)
    {
        //var workPlans = new List<WorkPlan>(); 
        //if (ids != null) 
        //{ 
@@ -225,319 +210,297 @@
        //                    name += WorkPlanConsts.CloneTag; 
        //                    continue; 
        //                } 
        //                notExist = true; 
        //            } 
        //            //WorkPlan = await workPlanRepository.InsertAsync(WorkPlan.Clone(GuidGenerator.Create(), name, sort++)); 
        //            workPlans.Add(WorkPlan); 
        //        } 
        //    } 
        //} 
        //return ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(workPlans); 
        return new List<WorkPlanDto>();
    }
        return new List<WorkPlanDto>();
    }
    /// <summary> 
    /// åˆ é™¤å•个作业计划表 
    /// </summary> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public virtual Task DeleteAsync(Guid id)
    {
        return workPlanRepository.DeleteAsync(id);
    }
    public virtual Task DeleteAsync(Guid id)
    {
        return workPlanRepository.DeleteAsync(id);
    }
    /// <summary> 
    /// åˆ é™¤å¤šä¸ªä½œä¸šè®¡åˆ’表 
    /// </summary> 
    /// <param name="ids"></param> 
    /// <returns></returns> 
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    /// <summary> 
    /// è°ƒæ•´æŽ’序作业计划表 
    /// </summary> 
    /// <param name="id"></param> 
    /// <param name="sort"></param> 
    /// <returns></returns> 
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await workPlanRepository.UpdateManyAsync(list);
    }
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await workPlanRepository.UpdateManyAsync(list);
    }
    /// <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())
        {
    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
                    {
            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
                    {
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,
                        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));
                }
            }
        }
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 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);
            }
        }
    }
        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> 
    /// å¯¼å‡ºä½œä¸šè®¡åˆ’表 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkPlan.Sort);
        }
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WorkPlan.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶  
        //动态构造查询条件  
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = result.Count > 1 ? "作业计划表列表" : result.Count == 1 ? result[0]?.TaskCode : "WorkPlan模版";
        return (sheets, fileName);
    }
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = "作业计划";
        return (sheets, fileName);
    }
    /// <summary> 
    /// æ ¡éªŒä½œä¸šè®¡åˆ’表,当新建或更新时 
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    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, "包括数量");
        return Task.CompletedTask;
    }
}
    protected Task CheckCreateOrUpdateDtoAsync(WorkPlanCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
                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;
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs
@@ -21,7 +21,6 @@
         * into multiple profile classes for a better organization. */ 
        CreateMap<WorkPlan, WorkPlanDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
        CreateMap<WorkPlanCreateDto, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
        CreateMap<GetWorkPlanInput, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkPlanInput, WorkPlanCreateDto>(MemberList.None);
        CreateMap<GetWorkPlanInput, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    } 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/EntityTypeBuilderExtensions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.MyExtension.Domain
{
    /// <summary>
    /// ç”¨äºŽæ‰©å±• EntityTypeBuilder çš„静态类,提供针对继承自 MyFullAuditedAggregateRoot<Guid> çš„实体类型的配置扩展方法
    /// </summary>
    public static class EntityTypeBuilderExtensions
    {
        /// <summary>
        /// é’ˆå¯¹ç»§æ‰¿è‡ª MyFullAuditedAggregateRoot<Guid> çš„实体类型,配置其公共属性
        /// </summary>
        /// <typeparam name="TEntity">继承自 MyFullAuditedAggregateRoot<Guid> çš„实体类型</typeparam>
        /// <param name="b">EntityTypeBuilder<TEntity> å®žä¾‹ï¼Œç”¨äºŽé…ç½®å®žä½“的属性</param>
        public static void ConfigureMyCmsEntity<TEntity>(this EntityTypeBuilder<TEntity> b) where TEntity : MyFullAuditedAggregateRoot<Guid>
        {
            b.Property(x => x.CreatorId)
             .HasMaxLength(36)
             .IsRequired(false)
             .HasComment("创建人ID");
            b.Property(x => x.CreatorName)
                .HasMaxLength(64)
                .IsRequired(false)
                .HasComment("创建人");
            b.Property(x => x.CreationTime)
                .IsRequired()
                .HasComment("创建时间");
            b.Property(x => x.LastModifierName)
                .HasMaxLength(64)
                .IsRequired(false)
                .HasComment("修改人");
            b.Property(x => x.LastModifierId)
                .HasMaxLength(36)
                .IsRequired(false)
                .HasComment("修改人ID");
            b.Property(x => x.LastModificationTime)
                .IsRequired(false)
                .HasComment("修改时间");
            b.Property(x => x.IsDeleted)
                .IsRequired()
                .HasComment("是否删除");
            b.Property(x => x.DeleterId)
                .HasMaxLength(36)
                .IsRequired(false)
                .HasComment("删除人ID");
            b.Property(x => x.DeletionTime)
                .IsRequired(false)
                .HasComment("删除时间");
            b.Property(x => x.ExtraProperties)
                .IsRequired(false)
                .HasComment("扩展属性");
            b.Property(x => x.ConcurrencyStamp)
                .IsRequired(false)
                .HasMaxLength(40)
                .HasComment("并发戳");
            b.Property(x => x.Sort)
                .HasDefaultValue(0)
                .HasComment("排序");
            b.Property(x => x.Remark)
                .HasMaxLength(256)
                .IsRequired(false)
                .HasComment("备注");
            b.Property(x => x.OperationRemark)
               .HasMaxLength(256)
               .IsRequired(false)
               .HasComment("操作备注");
            b.Property(x => x.DeleteRemark)
              .HasMaxLength(256)
              .IsRequired(false)
              .HasComment("删除备注");
            b.Property(x => x.IsDisabled)
                .IsRequired(false)
                .HasDefaultValue(false)
                .HasComment("是否禁用");
            b.Property(x => x.ExtraField1)
              .HasMaxLength(256)
              .IsRequired(false)
              .HasComment("扩展字段1");
            b.Property(x => x.ExtraField2)
               .HasMaxLength(256)
               .IsRequired(false)
               .HasComment("扩展字段2");
            b.Property(x => x.ExtraField3)
             .HasMaxLength(256)
             .IsRequired(false)
             .HasComment("扩展字段3");
        }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/EntityTypeBuilderExtensionsForRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.MyExtension.Domain
{
    /// <summary>
    /// ç”¨äºŽæ‰©å±• EntityTypeBuilder çš„静态类,提供针对继承自 MyFullAuditedAggregateRoot<Guid> çš„实体类型的配置扩展方法(记录表专用)
    /// </summary>
    public static class EntityTypeBuilderExtensionsForRecord
    {
        /// <summary>
        /// é’ˆå¯¹ç»§æ‰¿è‡ª MyFullAuditedAggregateRoot<Guid> çš„实体类型,配置其公共属性
        /// </summary>
        /// <typeparam name="TEntity">继承自 MyFullAuditedAggregateRoot<Guid> çš„实体类型</typeparam>
        /// <param name="b">EntityTypeBuilder<TEntity> å®žä¾‹ï¼Œç”¨äºŽé…ç½®å®žä½“的属性</param>
        public static void ConfigureMyCmsEntityForRecord<TEntity>(this EntityTypeBuilder<TEntity> b) where TEntity : MyFullAuditedAggregateRootForRecord<Guid>
        {
            b.Property(x => x.CreatorId)
             .HasMaxLength(36)
             .IsRequired(false)
             .HasComment("创建人ID");
            b.Property(x => x.CreatorName)
                .HasMaxLength(64)
                .IsRequired(false)
                .HasComment("创建人");
            b.Property(x => x.CreationTime)
                .IsRequired()
                .HasComment("创建时间");
            b.Property(x => x.LastModifierId)
                .HasMaxLength(36)
                .IsRequired(false)
                .HasComment("修改人ID");
            b.Property(x => x.LastModificationTime)
                .IsRequired(false)
                .HasComment("修改时间");
            b.Property(x => x.IsDeleted)
                .IsRequired()
                .HasComment("是否删除");
            b.Property(x => x.DeleterId)
                .HasMaxLength(36)
                .IsRequired(false)
                .HasComment("删除人ID");
            b.Property(x => x.DeletionTime)
                .IsRequired(false)
                .HasComment("删除时间");
            b.Property(x => x.ExtraProperties)
                .IsRequired(false)
                .HasComment("扩展属性");
            b.Property(x => x.ConcurrencyStamp)
                .IsRequired(false)
                .HasMaxLength(40)
                .HasComment("并发戳");
            b.Property(x => x.Sort)
                .HasDefaultValue(0)
                .HasComment("排序");
            b.Property(x => x.Remark)
                .HasMaxLength(256)
                .IsRequired(false)
                .HasComment("备注");
            b.Property(x => x.ExtraField1)
              .HasMaxLength(256)
              .IsRequired(false)
              .HasComment("扩展字段1");
            b.Property(x => x.ExtraField2)
               .HasMaxLength(256)
               .IsRequired(false)
               .HasComment("扩展字段2");
            b.Property(x => x.ExtraField3)
             .HasMaxLength(256)
             .IsRequired(false)
             .HasComment("扩展字段3");
        }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/MyFullAuditedAggregateRoot.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
using System;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities.Auditing;
namespace CMS.Plugin.MyExtension.Domain;
/// <summary>
/// æˆ‘扩展的实体类基类
/// </summary>
[Serializable]
public abstract class MyFullAuditedAggregateRoot : FullAuditedAggregateRoot
{
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public virtual string? CreatorName { get; set; }
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    public virtual string? LastModifierName { get; set; }
    /// <summary>
    /// æ“ä½œå¤‡æ³¨
    /// </summary>
    public virtual string? OperationRemark { get; set; }
    /// <summary>
    /// åˆ é™¤å¤‡æ³¨
    /// </summary>
    public virtual string? DeleteRemark { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string? Remark { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public virtual bool? IsDisabled { get; set; }
    /// <summary>
    /// æ‰©å±•字段1
    /// </summary>
    public virtual string? ExtraField1 { get; set; }
    /// <summary>
    /// æ‰©å±•字段2
    /// </summary>
    public virtual string? ExtraField2 { get; set; }
    /// <summary>
    /// æ‰©å±•字段3
    /// </summary>
    public virtual string? ExtraField3 { get; set; }
}
/// <summary>
/// æˆ‘扩展的实体类基类
/// </summary>
/// <typeparam name="TKey"></typeparam>
[Serializable]
public abstract class MyFullAuditedAggregateRoot<TKey> : FullAuditedAggregateRoot<TKey>
{
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public virtual string? CreatorName { get; set; }
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    public virtual string? LastModifierName { get; set; }
    /// <summary>
    /// æ“ä½œå¤‡æ³¨
    /// </summary>
    public virtual string? OperationRemark { get; set; }
    /// <summary>
    /// åˆ é™¤å¤‡æ³¨
    /// </summary>
    public virtual string? DeleteRemark { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string? Remark { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public virtual bool? IsDisabled { get; set; }
    /// <summary>
    /// æ‰©å±•字段1
    /// </summary>
    public virtual string? ExtraField1 { get; set; }
    /// <summary>
    /// æ‰©å±•字段2
    /// </summary>
    public virtual string? ExtraField2 { get; set; }
    /// <summary>
    /// æ‰©å±•字段3
    /// </summary>
    public virtual string? ExtraField3 { get; set; }
    protected MyFullAuditedAggregateRoot()
    {
    }
    protected MyFullAuditedAggregateRoot(TKey id)
    : base(id)
    {
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/MyExtension/MyFullAuditedAggregateRootForRecord.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
using System;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities.Auditing;
namespace CMS.Plugin.MyExtension.Domain;
/// <summary>
/// æˆ‘扩展的实体类基类(记录表专用)
/// </summary>
[Serializable]
public abstract class MyFullAuditedAggregateRootForRecord : FullAuditedAggregateRoot
{
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public virtual string? CreatorName { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string? Remark { get; set; }
    /// <summary>
    /// æ‰©å±•字段1
    /// </summary>
    public virtual string? ExtraField1 { get; set; }
    /// <summary>
    /// æ‰©å±•字段2
    /// </summary>
    public virtual string? ExtraField2 { get; set; }
    /// <summary>
    /// æ‰©å±•字段3
    /// </summary>
    public virtual string? ExtraField3 { get; set; }
}
/// <summary>
/// æˆ‘扩展的实体类基类(记录表专用)
/// </summary>
/// <typeparam name="TKey"></typeparam>
[Serializable]
public abstract class MyFullAuditedAggregateRootForRecord<TKey> : FullAuditedAggregateRoot<TKey>
{
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public virtual string? CreatorName { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string? Remark { get; set; }
    /// <summary>
    /// æ‰©å±•字段1
    /// </summary>
    public virtual string? ExtraField1 { get; set; }
    /// <summary>
    /// æ‰©å±•字段2
    /// </summary>
    public virtual string? ExtraField2 { get; set; }
    /// <summary>
    /// æ‰©å±•字段3
    /// </summary>
    public virtual string? ExtraField3 { get; set; }
    protected MyFullAuditedAggregateRootForRecord()
    {
    }
    protected MyFullAuditedAggregateRootForRecord(TKey id)
    : base(id)
    {
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/WorkPlan.cs
@@ -1,3 +1,4 @@
using CMS.Plugin.MyExtension.Domain;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using Volo.Abp.Domain.Entities.Auditing;
@@ -7,18 +8,105 @@
    /// <summary>
    /// ä½œä¸šè®¡åˆ’表
    /// </summary>
    public class WorkPlan : FullAuditedAggregateRoot<Guid>
    public class WorkPlan : MyFullAuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// ä»»åŠ¡ç¼–ç 
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// åŽŸæ–™ç¼–å·
        /// </summary>
        public string OrgMaterialCode { get; set; }
        #region åŽŸæ–™ç®¡ä¿¡æ¯
        ///// <summary>
        ///// åŽŸæ–™ç¼–å·
        ///// </summary>
        //public string OrgMaterialCode { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string DataIdentifier { get; set; }
        /// <summary>
        /// åŽŸæ–™åž‹å·
        /// </summary>
        public string MaterialMode { get; set; }
        #endregion
        #region æ‰“码
        /// <summary>
        /// é•¿åº¦(mm)
        /// </summary>
        public decimal Length { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string MarkingContent { get; set; }
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        public decimal MarkingPosition { get; set; }
        #endregion
        #region åˆ‡å‰²
        ///// <summary>
        ///// åˆ‡å‰²æ–‡ä»¶
        ///// </summary>
        //public string CuttingFile { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        public decimal CuttingPosition { get; set; }
        /// <summary>
        /// ç®¡æ®µæ•°é‡
        /// </summary>
        public int Quantity { get; set; }
        #endregion
        #region è£…配、焊接
        /// <summary>
        /// æ³•兰厚度(mm)
        /// </summary>
        public decimal FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰直径(mm)
        /// </summary>
        public decimal FlangeInnerDiameter { get; set; }
        /// <summary>
        /// æ³•兰公称压力
        /// </summary>
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// æ³•兰冲码内容
        /// </summary>
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// å¥—管长度(mm)
        /// </summary>
        public decimal PipeDiameter { get; set; }
        /// <summary>
        /// å¥—管直径(mm)
        /// </summary>
        public decimal PipeWallThickness { get; set; }
        #endregion
        /// <summary>
        /// å·¥åŽ‚ä»£ç 
@@ -60,13 +148,10 @@
        /// </summary>
        public string PreSerialNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
        public string DataIdentifier { get; set; }
        /// <summary>
        /// ç®¡è§„格码
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
@@ -76,142 +161,38 @@
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径
        /// å¤–径(mm)
        /// </summary>
        public string OuterDiameter { get; set; }
        public decimal OuterDiameter { get; set; }
        /// <summary>
        /// å¡å£
        /// å£åŽš(mm)
        /// </summary>
        public string Bevel { get; set; }
        public decimal Thickness { get; set; }
        /// <summary>
        /// æè´¨
        /// </summary>
        public string Material { get; set; }
        /// <summary>
        /// é•¿åº¦
        /// </summary>
        public string Length { get; set; }
        /// <summary>
        /// æ‰“孔位
        /// </summary>
        public string DrillingPosition { get; set; }
        /// <summary>
        /// ç›¸è´¯
        /// </summary>
        public string Intersecting { get; set; }
        /// <summary>
        /// æŽ¥å£è¦æ±‚
        /// </summary>
        public string InterfaceRequirement { get; set; }
        /// <summary>
        /// æ˜¯å¦æœ‰ä¸»ç­¾
        /// æ˜¯å¦ä¸»æ”¯ç®¡
        /// </summary>
        public bool HasMainSignature { get; set; }
        /// <summary>
        /// åŒ…括数量
        /// </summary>
        public int Quantity { get; set; }
        ///// <summary>
        ///// æˆå“ç®¡ä»¶å›¾
        ///// </summary>
        //public string FinishedProductScale { get; set; }
        /// <summary>
        /// æ‰“码内容
        /// </summary>
        public string MarkingContent { get; set; }
        /// <summary>
        /// åˆ‡å‰²æ–‡ä»¶
        /// </summary>
        public string CuttingFile { get; set; }
        /// <summary>
        /// æ”¯å¤–径
        /// </summary>
        public string BranchOuterDiameter { get; set; }
        /// <summary>
        /// æ”¯ç®¡å£åŽš
        /// </summary>
        public string BranchWallThickness { get; set; }
        /// <summary>
        /// æ”¯ç®¡æè´¨
        /// </summary>
        public string BranchMaterial { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£æ›²çŽ‡åŠå¾„
        /// </summary>
        public string BranchPortRadius { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è§’度
        /// </summary>
        public string BranchPortAngle { get; set; }
        /// <summary>
        /// æ”¯ç®¡ç«¯å£è¦æ±‚
        /// </summary>
        public string BranchPortRequirement { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åž‹
        /// </summary>
        public string IntersectingLineType { get; set; }
        /// <summary>
        /// ç›¸è´¯çº¿ç±»åˆ«
        /// </summary>
        public string IntersectingLineCategory { get; set; }
        /// <summary>
        /// æˆå“å›¾å¹…
        /// </summary>
        public string FinishedProductScale { get; set; }
        /// <summary>
        /// æ³•兰厚度
        /// </summary>
        public string FlangeThickness { get; set; }
        /// <summary>
        /// æ³•兰内径
        /// </summary>
        public string FlangeInnerDiameter { get; set; }
        /// <summary>
        /// ç„ŠæŽ¥çƒ­è¾“å…¥
        /// </summary>
        public string WeldingHeatInput { get; set; }
        /// <summary>
        /// ç®¡é“允许应力
        /// </summary>
        public string PipeAllowableStress { get; set; }
        /// <summary>
        /// ç®¡å¾„
        /// </summary>
        public string PipeDiameter { get; set; }
        /// <summary>
        /// ç®¡é“壁厚
        /// </summary>
        public string PipeWallThickness { get; set; }
        /// <summary>
        /// VR数据
        /// </summary>
        public string VRData { get; set; }
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ç¼–号
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
@@ -226,42 +207,14 @@
        public DateTime? PlannedEndTime { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        public string TimeInfo { get; set; }
        public string TeamInfo { get; set; }
        /// <summary>
        /// å†—余字段1 - é¢„留扩展用途
        /// æ—¶é—´æˆ³
        /// </summary>
        public string RedundantField1 { get; set; }
        /// <summary>
        /// å†—余字段2 - é¢„留扩展用途
        /// </summary>
        public string RedundantField2 { get; set; }
        /// <summary>
        /// å†—余字段3 - é¢„留扩展用途
        /// </summary>
        public string RedundantField3 { get; set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public virtual int Sort { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public virtual string Remark { get; set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public virtual bool? IsDisabled { get; set; }
        public string Timestamp { get; set; }
        /// <summary>
        /// Adjusts the sort.
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkPlan.cs
@@ -1,4 +1,6 @@
using CMS.Plugin.MyExtension.Domain;
using CMS.Plugin.PipeLineLems.Domain;
using CMS.Plugin.PipeLineLems.Domain.Shared.MyTestEntityNames;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
@@ -9,7 +11,7 @@
/// <summary>
/// EfCore扩展
/// </summary>
public  static partial class CMSPluginEfCoreExtensions
public static partial class CMSPluginEfCoreExtensions
{
    /// <summary>
    /// Includes the details.
@@ -42,58 +44,51 @@
            b.ConfigureByConvention();
            //Properties
            b.Property(x => x.TaskCode).HasMaxLength(64).IsRequired().HasComment("任务编码");
            b.Property(x => x.OrgMaterialCode).HasMaxLength(64).IsRequired().HasComment("原料编号");
            b.Property(x => x.Sort).HasComment("排序");
            b.Property(x => x.IsDisabled).IsRequired(false).HasComment("是否禁用");
            b.Property(x => x.Remark).HasMaxLength(256).IsRequired(false).HasComment("备注");
            // Configure properties
            b.Property(x => x.TaskCode).HasMaxLength(256).IsRequired().HasComment("任务编码");
            b.Property(x => x.DataIdentifier).HasMaxLength(256).HasComment("原料标识");
            b.Property(x => x.MaterialMode).HasMaxLength(256).HasComment("原料型号");
            b.Property(x => x.Length).HasColumnType("decimal(18,2)").HasComment("长度(mm)");
            b.Property(x => x.MarkingContent).HasMaxLength(1024).HasComment("打码内容");
            b.Property(x => x.OrgMaterialCode).HasMaxLength(64).HasComment("原料编号");
            b.Property(x => x.FactoryCode).HasMaxLength(64).HasComment("工厂代码");
            b.Property(x => x.ProductCode).HasMaxLength(64).HasComment("产品代码");
            b.Property(x => x.WorkstationCode).HasMaxLength(64).HasComment("工位代码");
            b.Property(x => x.EquipmentCode).HasMaxLength(64).HasComment("设备代码");
            b.Property(x => x.WorkpieceName).HasMaxLength(64).HasComment("工件名称");
            b.Property(x => x.ProcessName).HasMaxLength(64).HasComment("工序名称");
            b.Property(x => x.PipeFittingCode).HasMaxLength(64).HasComment("管件编码");
            b.Property(x => x.PreSerialNumber).HasMaxLength(64).HasComment("顺序号");
            b.Property(x => x.DataIdentifier).HasMaxLength(64).HasComment("原料标识");
            b.Property(x => x.PipeSpecCode).HasMaxLength(64).HasComment("管规格码");
            b.Property(x => x.PipeSectionName).HasMaxLength(64).HasComment("管段名称");
            b.Property(x => x.OuterDiameter).HasMaxLength(64).HasComment("外径");
            b.Property(x => x.Bevel).HasMaxLength(64).HasComment("坡口");
            b.Property(x => x.Material).HasMaxLength(64).HasComment("材质");
            b.Property(x => x.Length).HasMaxLength(64).HasComment("长度");
            b.Property(x => x.DrillingPosition).HasMaxLength(64).HasComment("打孔位");
            b.Property(x => x.Intersecting).HasMaxLength(64).HasComment("相贯");
            b.Property(x => x.InterfaceRequirement).HasMaxLength(64).HasComment("接口要求");
            b.Property(x => x.HasMainSignature).HasComment("是否有主签");
            b.Property(x => x.Quantity).HasComment("包括数量");
            b.Property(x => x.MarkingContent).HasMaxLength(64).HasComment("打码内容");
            b.Property(x => x.CuttingFile).HasMaxLength(64).HasComment("切割文件");
            b.Property(x => x.BranchOuterDiameter).HasMaxLength(64).HasComment("支外径");
            b.Property(x => x.BranchWallThickness).HasMaxLength(64).HasComment("支管壁厚");
            b.Property(x => x.BranchMaterial).HasMaxLength(64).HasComment("支管材质");
            b.Property(x => x.BranchPortRadius).HasMaxLength(64).HasComment("支管端口曲率半径");
            b.Property(x => x.BranchPortAngle).HasMaxLength(64).HasComment("支管端口角度");
            b.Property(x => x.BranchPortRequirement).HasMaxLength(64).HasComment("支管端口要求");
            b.Property(x => x.IntersectingLineType).HasMaxLength(64).HasComment("相贯线类型");
            b.Property(x => x.IntersectingLineCategory).HasMaxLength(64).HasComment("相贯线类别");
            b.Property(x => x.FinishedProductScale).HasMaxLength(64).HasComment("成品图幅");
            b.Property(x => x.FlangeThickness).HasMaxLength(64).HasComment("法兰厚度");
            b.Property(x => x.FlangeInnerDiameter).HasMaxLength(64).HasComment("法兰内径");
            b.Property(x => x.WeldingHeatInput).HasMaxLength(64).HasComment("焊接热输入");
            b.Property(x => x.PipeAllowableStress).HasMaxLength(64).HasComment("管道允许应力");
            b.Property(x => x.PipeDiameter).HasMaxLength(64).HasComment("管径");
            b.Property(x => x.PipeWallThickness).HasMaxLength(64).HasComment("管道壁厚");
            b.Property(x => x.VRData).HasMaxLength(64).HasComment("VR数据");
            b.Property(x => x.ProcessRouteNumber).HasMaxLength(64).HasComment("工艺路线编号");
            b.Property(x => x.Quantity).HasComment("管段数量");
            b.Property(x => x.FlangeThickness).HasColumnType("decimal(18,2)").HasComment("法兰厚度(mm)");
            b.Property(x => x.FlangeInnerDiameter).HasColumnType("decimal(18,2)").HasComment("法兰直径(mm)");
            b.Property(x => x.WeldingHeatInput).HasMaxLength(256).HasComment("法兰公称压力");
            b.Property(x => x.PipeAllowableStress).HasMaxLength(256).HasComment("法兰冲码内容");
            b.Property(x => x.PipeDiameter).HasColumnType("decimal(18,2)").HasComment("套管长度(mm)");
            b.Property(x => x.PipeWallThickness).HasColumnType("decimal(18,2)").HasComment("套管直径(mm)");
            b.Property(x => x.FactoryCode).HasMaxLength(256).HasComment("工厂代码");
            b.Property(x => x.ProductCode).HasMaxLength(256).HasComment("产品代码");
            b.Property(x => x.WorkstationCode).HasMaxLength(256).HasComment("工位代码");
            b.Property(x => x.EquipmentCode).HasMaxLength(256).HasComment("设备代码");
            b.Property(x => x.WorkpieceName).HasMaxLength(256).HasComment("工件名称");
            b.Property(x => x.ProcessName).HasMaxLength(256).HasComment("工序名称");
            b.Property(x => x.PipeFittingCode).HasMaxLength(256).HasComment("管件编码");
            b.Property(x => x.PreSerialNumber).HasMaxLength(256).HasComment("顺序号");
            b.Property(x => x.PipeSpecCode).HasMaxLength(256).HasComment("管段编码");
            b.Property(x => x.PipeSectionName).HasMaxLength(256).HasComment("管段名称");
            b.Property(x => x.OuterDiameter).HasColumnType("decimal(18,2)").HasComment("外径(mm)");
            b.Property(x => x.Thickness).HasColumnType("decimal(18,2)").HasComment("壁厚(mm)");
            b.Property(x => x.Material).HasMaxLength(256).HasComment("材质");
            b.Property(x => x.HasMainSignature).HasComment("是否主支管");
            b.Property(x => x.MarkingPosition).HasColumnType("decimal(18,2)").HasComment("打码位置");
            b.Property(x => x.CuttingPosition).HasColumnType("decimal(18,2)").HasComment("切割位置");
            b.Property(x => x.ProcessRouteNumber).HasMaxLength(256).HasComment("工艺流向编号");
            b.Property(x => x.PlannedStartTime).HasComment("计划开始时间");
            b.Property(x => x.PlannedEndTime).HasComment("计划完成时间");
            b.Property(x => x.TimeInfo).HasMaxLength(64).HasComment("时间信息");
            b.Property(x => x.TeamInfo).HasMaxLength(256).HasComment("班组信息");
            b.Property(x => x.Timestamp).HasMaxLength(256).HasComment("时间戳");
            b.HasIndex(u => u.TaskCode);
            b.ConfigureMyCmsEntity();
            // Configure indexes
            b.HasIndex(u => u.TaskCode).IsUnique();
            b.HasIndex(u => u.DataIdentifier);
            b.HasIndex(u => u.PlannedStartTime);
            b.HasIndex(u => u.PlannedEndTime);
            b.ApplyObjectExtensionMappings();
        });
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs
@@ -35,7 +35,7 @@
        return await (await GetDbSetAsync()) 
            .IncludeDetails() 
            .Where(x => !x.IsDeleted) 
            .OrderBy(t => t.Sort)
            .OrderByDescending(x=>x.CreationTime)
            .FirstOrDefaultAsync(t => t.TaskCode == name, GetCancellationToken(cancellationToken)); 
    } 
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250427055701_InitialCreate.Designer.cs
ÎļþÒÑɾ³ý
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250427055701_InitialCreate.cs
ÎļþÒÑɾ³ý
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250507025649_Update1.Designer.cs
ÎļþÒÑɾ³ý
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250507025649_Update1.cs
ÎļþÒÑɾ³ý
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250510023811_Update1.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,385 @@
// <auto-generated />
using System;
using CMS.Plugin.PipeLineLems.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.PipeLineLems.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250510023811_Update1")]
    partial class Update1
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.MyTestEntityNames.MyTestEntityName", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("编码");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("名称");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.HasKey("Id");
                    b.HasIndex("Name");
                    b.ToTable("scms_mytestentitynames", (string)null);
                    b.HasComment("MyTestEntityName");
                });
            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.WorkPlan.WorkPlan", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp")
                        .HasComment("并发戳");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime")
                        .HasComment("创建时间");
                    b.Property<Guid?>("CreatorId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId")
                        .HasComment("创建人ID");
                    b.Property<string>("CreatorName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("创建人");
                    b.Property<decimal>("CuttingPosition")
                        .HasColumnType("decimal(65,30)");
                    b.Property<string>("DataIdentifier")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("原料标识");
                    b.Property<string>("DeleteRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("删除备注");
                    b.Property<Guid?>("DeleterId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId")
                        .HasComment("删除人ID");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime")
                        .HasComment("删除时间");
                    b.Property<string>("EquipmentCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("设备代码");
                    b.Property<string>("ExtraField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段1");
                    b.Property<string>("ExtraField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段2");
                    b.Property<string>("ExtraField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段3");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties")
                        .HasComment("扩展属性");
                    b.Property<string>("FactoryCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工厂代码");
                    b.Property<decimal>("FlangeInnerDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("法兰直径(mm)");
                    b.Property<decimal>("FlangeThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("法兰厚度(mm)");
                    b.Property<bool>("HasMainSignature")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否主支管");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted")
                        .HasComment("是否删除");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime")
                        .HasComment("修改时间");
                    b.Property<Guid?>("LastModifierId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId")
                        .HasComment("修改人ID");
                    b.Property<string>("LastModifierName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("修改人");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(mm)");
                    b.Property<string>("MarkingContent")
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)")
                        .HasComment("打码内容");
                    b.Property<decimal>("MarkingPosition")
                        .HasColumnType("decimal(65,30)");
                    b.Property<string>("Material")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("材质");
                    b.Property<string>("MaterialMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("原料型号");
                    b.Property<string>("OperationRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("操作备注");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(mm)");
                    b.Property<string>("PipeAllowableStress")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("法兰冲码内容");
                    b.Property<decimal>("PipeDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管长度(mm)");
                    b.Property<string>("PipeFittingCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管件编码");
                    b.Property<string>("PipeSectionName")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段名称");
                    b.Property<string>("PipeSpecCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
                    b.Property<DateTime?>("PlannedEndTime")
                        .HasColumnType("datetime(6)")
                        .HasComment("计划完成时间");
                    b.Property<DateTime?>("PlannedStartTime")
                        .HasColumnType("datetime(6)")
                        .HasComment("计划开始时间");
                    b.Property<string>("PreSerialNumber")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("顺序号");
                    b.Property<string>("ProcessName")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工序名称");
                    b.Property<string>("ProcessRouteNumber")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工艺流向编号");
                    b.Property<string>("ProductCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("产品代码");
                    b.Property<int>("Quantity")
                        .HasColumnType("int")
                        .HasComment("管段数量");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("TaskCode")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("任务编码");
                    b.Property<string>("TeamInfo")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("班组信息");
                    b.Property<decimal>("Thickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(mm)");
                    b.Property<string>("Timestamp")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("时间戳");
                    b.Property<string>("WeldingHeatInput")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("法兰公称压力");
                    b.Property<string>("WorkpieceName")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工件名称");
                    b.Property<string>("WorkstationCode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工位代码");
                    b.HasKey("Id");
                    b.HasIndex("DataIdentifier");
                    b.HasIndex("PlannedEndTime");
                    b.HasIndex("PlannedStartTime");
                    b.HasIndex("TaskCode")
                        .IsUnique();
                    b.ToTable("scms_workplans", (string)null);
                    b.HasComment("WorkPlan");
                });
#pragma warning restore 612, 618
        }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250510023811_Update1.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMS.Plugin.PipeLineLems.MySQL.Migrations
{
    public partial class Update1 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AlterDatabase()
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_mytestentitynames",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    Code = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Name = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, comment: "是否禁用"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_mytestentitynames", x => x.Id);
                },
                comment: "MyTestEntityName")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_workplans",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    TaskCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false, comment: "任务编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    DataIdentifier = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "原料标识")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    MaterialMode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "原料型号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "长度(mm)"),
                    MarkingContent = table.Column<string>(type: "varchar(1024)", maxLength: 1024, nullable: true, comment: "打码内容")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    MarkingPosition = table.Column<decimal>(type: "decimal(65,30)", nullable: false),
                    CuttingPosition = table.Column<decimal>(type: "decimal(65,30)", nullable: false),
                    Quantity = table.Column<int>(type: "int", nullable: false, comment: "管段数量"),
                    FlangeThickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "法兰厚度(mm)"),
                    FlangeInnerDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "法兰直径(mm)"),
                    WeldingHeatInput = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "法兰公称压力")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PipeAllowableStress = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "法兰冲码内容")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PipeDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "套管长度(mm)"),
                    PipeWallThickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "套管直径(mm)"),
                    FactoryCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "工厂代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProductCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "产品代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    WorkstationCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "工位代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    EquipmentCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "设备代码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    WorkpieceName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "工件名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProcessName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "工序名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PipeFittingCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "管件编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PreSerialNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "顺序号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PipeSpecCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "管段编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PipeSectionName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "管段名称")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    OuterDiameter = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "外径(mm)"),
                    Thickness = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "壁厚(mm)"),
                    Material = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "材质")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    HasMainSignature = table.Column<bool>(type: "tinyint(1)", nullable: false, comment: "是否主支管"),
                    ProcessRouteNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "工艺流向编号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    PlannedStartTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "计划开始时间"),
                    PlannedEndTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "计划完成时间"),
                    TeamInfo = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "班组信息")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Timestamp = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "时间戳")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true, comment: "扩展属性")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true, comment: "并发戳")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "创建时间"),
                    CreatorId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "创建人ID", collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "修改时间"),
                    LastModifierId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "修改人ID", collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "是否删除"),
                    DeleterId = table.Column<Guid>(type: "char(36)", maxLength: 36, nullable: true, comment: "删除人ID", collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "删除时间"),
                    CreatorName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "创建人")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    LastModifierName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true, comment: "修改人")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    OperationRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "操作备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    DeleteRemark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "删除备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false, defaultValue: 0, comment: "排序"),
                    Remark = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true, defaultValue: false, comment: "是否禁用"),
                    ExtraField1 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "扩展字段1")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraField2 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "扩展字段2")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraField3 = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "扩展字段3")
                        .Annotation("MySql:CharSet", "utf8mb4")
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_workplans", x => x.Id);
                },
                comment: "WorkPlan")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateIndex(
                name: "IX_scms_mytestentitynames_Name",
                table: "scms_mytestentitynames",
                column: "Name");
            migrationBuilder.CreateIndex(
                name: "IX_scms_workplans_DataIdentifier",
                table: "scms_workplans",
                column: "DataIdentifier");
            migrationBuilder.CreateIndex(
                name: "IX_scms_workplans_PlannedEndTime",
                table: "scms_workplans",
                column: "PlannedEndTime");
            migrationBuilder.CreateIndex(
                name: "IX_scms_workplans_PlannedStartTime",
                table: "scms_workplans",
                column: "PlannedStartTime");
            migrationBuilder.CreateIndex(
                name: "IX_scms_workplans_TaskCode",
                table: "scms_workplans",
                column: "TaskCode",
                unique: true);
        }
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "scms_mytestentitynames");
            migrationBuilder.DropTable(
                name: "scms_workplans");
        }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
@@ -101,210 +101,188 @@
                    b.HasComment("MyTestEntityName");
                });
            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.WmsAreas.WorkPlan", b =>
            modelBuilder.Entity("CMS.Plugin.PipeLineLems.Domain.WorkPlan.WorkPlan", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Bevel")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("坡口");
                    b.Property<string>("BranchMaterial")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支管材质");
                    b.Property<string>("BranchOuterDiameter")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支外径");
                    b.Property<string>("BranchPortAngle")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支管端口角度");
                    b.Property<string>("BranchPortRadius")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支管端口曲率半径");
                    b.Property<string>("BranchPortRequirement")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支管端口要求");
                    b.Property<string>("BranchWallThickness")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("支管壁厚");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                        .HasColumnName("ConcurrencyStamp")
                        .HasComment("并发戳");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                        .HasColumnName("CreationTime")
                        .HasComment("创建时间");
                    b.Property<Guid?>("CreatorId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                        .HasColumnName("CreatorId")
                        .HasComment("创建人ID");
                    b.Property<string>("CuttingFile")
                    b.Property<string>("CreatorName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("切割文件");
                        .HasComment("创建人");
                    b.Property<decimal>("CuttingPosition")
                        .HasColumnType("decimal(65,30)");
                    b.Property<string>("DataIdentifier")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("原料标识");
                    b.Property<string>("DeleteRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("删除备注");
                    b.Property<Guid?>("DeleterId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                        .HasColumnName("DeleterId")
                        .HasComment("删除人ID");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("DrillingPosition")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("打孔位");
                        .HasColumnName("DeletionTime")
                        .HasComment("删除时间");
                    b.Property<string>("EquipmentCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("设备代码");
                    b.Property<string>("ExtraField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段1");
                    b.Property<string>("ExtraField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段2");
                    b.Property<string>("ExtraField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段3");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                        .HasColumnName("ExtraProperties")
                        .HasComment("扩展属性");
                    b.Property<string>("FactoryCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工厂代码");
                    b.Property<string>("FinishedProductScale")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("成品图幅");
                    b.Property<decimal>("FlangeInnerDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("法兰直径(mm)");
                    b.Property<string>("FlangeInnerDiameter")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("法兰内径");
                    b.Property<string>("FlangeThickness")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("法兰厚度");
                    b.Property<decimal>("FlangeThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("法兰厚度(mm)");
                    b.Property<bool>("HasMainSignature")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否有主签");
                    b.Property<string>("InterfaceRequirement")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("接口要求");
                    b.Property<string>("Intersecting")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("相贯");
                    b.Property<string>("IntersectingLineCategory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("相贯线类别");
                    b.Property<string>("IntersectingLineType")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("相贯线类型");
                        .HasComment("是否主支管");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                        .HasColumnName("IsDeleted")
                        .HasComment("是否删除");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                        .HasColumnName("LastModificationTime")
                        .HasComment("修改时间");
                    b.Property<Guid?>("LastModifierId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                        .HasColumnName("LastModifierId")
                        .HasComment("修改人ID");
                    b.Property<string>("Length")
                    b.Property<string>("LastModifierName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("长度");
                        .HasComment("修改人");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(mm)");
                    b.Property<string>("MarkingContent")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)")
                        .HasComment("打码内容");
                    b.Property<decimal>("MarkingPosition")
                        .HasColumnType("decimal(65,30)");
                    b.Property<string>("Material")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("材质");
                    b.Property<string>("OrgMaterialCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("原料编号");
                    b.Property<string>("MaterialMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("原料型号");
                    b.Property<string>("OuterDiameter")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("外径");
                    b.Property<string>("OperationRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("操作备注");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(mm)");
                    b.Property<string>("PipeAllowableStress")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("管道允许应力");
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("法兰冲码内容");
                    b.Property<string>("PipeDiameter")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("管径");
                    b.Property<decimal>("PipeDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管长度(mm)");
                    b.Property<string>("PipeFittingCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管件编码");
                    b.Property<string>("PipeSectionName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段名称");
                    b.Property<string>("PipeSpecCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("管规格码");
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<string>("PipeWallThickness")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("管道壁厚");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
                    b.Property<DateTime?>("PlannedEndTime")
                        .HasColumnType("datetime(6)")
@@ -315,37 +293,28 @@
                        .HasComment("计划开始时间");
                    b.Property<string>("PreSerialNumber")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("顺序号");
                    b.Property<string>("ProcessName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工序名称");
                    b.Property<string>("ProcessRouteNumber")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("工艺路线编号");
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工艺流向编号");
                    b.Property<string>("ProductCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("产品代码");
                    b.Property<int>("Quantity")
                        .HasColumnType("int")
                        .HasComment("包括数量");
                    b.Property<string>("RedundantField1")
                        .HasColumnType("longtext");
                    b.Property<string>("RedundantField2")
                        .HasColumnType("longtext");
                    b.Property<string>("RedundantField3")
                        .HasColumnType("longtext");
                        .HasComment("管段数量");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
@@ -353,43 +322,56 @@
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("TaskCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("任务编码");
                    b.Property<string>("TimeInfo")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("时间信息");
                    b.Property<string>("TeamInfo")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("班组信息");
                    b.Property<string>("VRData")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("VR数据");
                    b.Property<decimal>("Thickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(mm)");
                    b.Property<string>("Timestamp")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("时间戳");
                    b.Property<string>("WeldingHeatInput")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("焊接热输入");
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("法兰公称压力");
                    b.Property<string>("WorkpieceName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工件名称");
                    b.Property<string>("WorkstationCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("工位代码");
                    b.HasKey("Id");
                    b.HasIndex("TaskCode");
                    b.HasIndex("DataIdentifier");
                    b.HasIndex("PlannedEndTime");
                    b.HasIndex("PlannedStartTime");
                    b.HasIndex("TaskCode")
                        .IsUnique();
                    b.ToTable("scms_workplans", (string)null);
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMS.Plugin.PipeLineLems.csproj
@@ -64,4 +64,10 @@
      </Resource>
    </ItemGroup>
    <ItemGroup>
      <None Update="Resources\Templates\WorkPlan导出模板.xlsx">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      </None>
    </ItemGroup>
</Project>
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
@@ -50,7 +50,7 @@
        context.Services.AddScoped<IProjectRuntimeMigrator, CMSPluginRuntimeMigrator>();
        context.Services.AddSingleton<IProjectService, PipeLineLemsProjectService>();
        context.Services.AddScoped<IMesAppService, MesAppService>();
        //context.Services.AddScoped<IMesAppService, MesAppService>();
        context.Services.AddScoped<IEFDataProvider>(p =>
        {
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkPlanµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/File/GenerateCodeConfigParamFiles/Ïé×ÓµÄ×÷Òµ¼Æ»®±íÅäÖÃÎı¾(Ä£ºý²éѯ×Ô¶¯°æ).txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
[表名]:scms_workplans
[实体类名]:WorkPlan
[实体类对象名]:workPlan
[页面菜单名]:作业计划
[页面菜单对象缩写]:workPlan
[表的中文注解]:作业计划表
[重复性校验字段]:TaskCode
[删除提示字段]:TaskCode
[模糊查询字段]:
[模糊查询字段名]:
[项目命名空间]:PipeLineLems
[枚举类型字段集合]:
[前端根文件夹名称]:pipelinelems_web
[排序]:CreationTime
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Web/Controllers/EntityModeDrawer_Generate.cs
@@ -23,11 +23,11 @@
            //替换新增form列表属性
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForUpdateMode(param.ColumnNameList);
            attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributes_formItems(param.ColumnNameList, param);
            attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributes_formItems(newColumnNameList, param);
            str = str.Replace("$PageAddFormAttributes_formItems$", attrString);
            attrString = "";
            attrString += StructStrHelper.GetVueFormOptionsStrForSave_PageAddFormAttributes(param.ColumnNameList,param);
            attrString += StructStrHelper.GetVueFormOptionsStrForSave_PageAddFormAttributes(newColumnNameList, param);
            str = str.Replace("$Save_PageAddFormAttributes$", attrString);
            attrString = "";
@@ -35,7 +35,7 @@
            str = str.Replace("$CommonQueryEnumForFrom$", attrString);
            attrString = "";
            attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributesByOpen(param.ColumnNameList, param);
            attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributesByOpen(newColumnNameList, param);
            str = str.Replace("$PageAddFormAttributesByOpen$", attrString);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/GenerateCode_WeiBen_CMS.csproj
@@ -319,6 +319,9 @@
    </BootstrapperPackage>
  </ItemGroup>
  <ItemGroup>
    <Content Include="File\GenerateCodeConfigParamFiles\祥子的作业计划表配置文本%28模糊查询自动版%29.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="File\GenerateCodeConfigParamFiles\祥子的作业计划表配置文本.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.Designer.cs
@@ -78,6 +78,7 @@
            this.tb_FilePath = new System.Windows.Forms.TextBox();
            this.btn_SelectFile = new System.Windows.Forms.Button();
            this.button1 = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.SuspendLayout();
@@ -357,6 +358,7 @@
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.label1);
            this.groupBox2.Controls.Add(this.tb_DeleteAlertAttr);
            this.groupBox2.Controls.Add(this.label25);
            this.groupBox2.Controls.Add(this.tb_ValidateRepeatName);
@@ -395,7 +397,7 @@
            this.groupBox2.Controls.Add(this.label7);
            this.groupBox2.Location = new System.Drawing.Point(51, 90);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(1187, 470);
            this.groupBox2.Size = new System.Drawing.Size(1283, 470);
            this.groupBox2.TabIndex = 46;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "自定义配置";
@@ -552,11 +554,21 @@
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click_1);
            // 
            // label1
            //
            this.label1.AutoSize = true;
            this.label1.ForeColor = System.Drawing.Color.Red;
            this.label1.Location = new System.Drawing.Point(976, 185);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(245, 12);
            this.label1.TabIndex = 66;
            this.label1.Text = "如果为空,系统默认所有字符串的展示列查询";
            //
            // MainForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1250, 831);
            this.ClientSize = new System.Drawing.Size(1402, 831);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.btn_SelectFile);
            this.Controls.Add(this.tb_FilePath);
@@ -632,6 +644,7 @@
        private System.Windows.Forms.TextBox tb_FilePath;
        private System.Windows.Forms.Button btn_SelectFile;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Label label1;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -135,17 +135,17 @@
                string _tb_LikeQueryAttrsName = this.tb_LikeQueryAttrsName.Text.Trim();//中文注释
                if (_tb_LikeQueryAttrsName == "")
                {
                    MessageBox.Show("请输入 æ¨¡ç³ŠæŸ¥è¯¢å­—段名!");
                    this.tb_LikeQueryAttrsName.Focus();
                    return;
                    //MessageBox.Show("请输入 æ¨¡ç³ŠæŸ¥è¯¢å­—段名!");
                    //this.tb_LikeQueryAttrsName.Focus();
                    //return;
                }
                string _tb_LikeQueryAttrs = this.tb_LikeQueryAttrs.Text.Trim();//中文注释
                if (_tb_LikeQueryAttrs == "")
                {
                    MessageBox.Show("请输入 æ¨¡ç³ŠæŸ¥è¯¢å­—段!");
                    this.tb_LikeQueryAttrs.Focus();
                    return;
                    //MessageBox.Show("请输入 æ¨¡ç³ŠæŸ¥è¯¢å­—段!");
                    //this.tb_LikeQueryAttrs.Focus();
                    //return;
                }
                string chinaComment = this.tb_ChinaComment.Text.Trim();//中文注释
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/CommonHelper.cs
@@ -47,8 +47,17 @@
            str = str.Replace("$Modulelogo$", param.Modulelogo);//模块简写
            str = str.Replace("$EntityInstanceName$", param.EntityInstanceName);//实例名
            str = str.Replace("$LikeQueryAttrs$", param.LikeQueryAttrs);
            str = str.Replace("$LikeQueryAttrsName$", param.LikeQueryAttrsName);
            //如果为空,系统默认所有字符串的展示列查询
            var str_LikeQueryAttrs = param.LikeQueryAttrs;
            var str_LikeQueryAttrsName = param.LikeQueryAttrsName;
            if (string.IsNullOrEmpty(param.LikeQueryAttrs))
            {
                str_LikeQueryAttrs = StructStrHelper.Get_LikeQueryAttrs(param.ColumnNameList, param);
                str_LikeQueryAttrsName = StructStrHelper.Get_LikeQueryAttrsName(param.ColumnNameList, param);
            }
            str = str.Replace("$LikeQueryAttrs$", str_LikeQueryAttrs);
            str = str.Replace("$LikeQueryAttrsName$", str_LikeQueryAttrsName);
            str = str.Replace("$ValidateRepeatName$", param.ValidateRepeatName);
            str = str.Replace("$DeleteAlertAttr$", param.DeleteAlertAttr);
            str = str.Replace("$OrderBy$", param.OrderBy);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/ListHelper.cs
@@ -41,6 +41,7 @@
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeletionTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_IsDisabled.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Sort.ToUpper()
                    || SystemCommonVar.c_Extend.Contains(columnModel.ColumnName.ToUpper())
@@ -90,6 +91,7 @@
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeletionTime.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_IsDisabled.ToUpper()
                    || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Sort.ToUpper()
                    || SystemCommonVar.c_Extend.Contains(columnModel.ColumnName.ToUpper())
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/StructStrHelper.cs
@@ -2214,8 +2214,7 @@
                /*
                  materialCode: formData.value.materialCode,
                 */
                List<ColumnModel> newList = ListHelper.RemoveForPageAddFormAttributes(columnModelList);
                foreach (var columnModel in newList)
                foreach (var columnModel in columnModelList)
                {
                    //首字母小写
                    var low_prop_ColumnName = CommonHelper.FirstLowercase(columnModel.ColumnName);
@@ -2261,6 +2260,80 @@
            }
        }
        public static string Get_LikeQueryAttrs(List<ColumnModel> columnModelList, GenerateCodeParam param)
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                /*
                  [模糊查询字段]:'TaskCode','MaterialMode', 'ProductCode'
                 */
                List<ColumnModel> newList = ListHelper.RemoveForPageTableListQueryAttributes(columnModelList);
                foreach (var columnModel in newList)
                {
                    //获取数据类型
                    DataTypeEnum enumDT = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType.ToString());
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_nvarchar:
                        case DataTypeEnum.dt_varchar:
                        case DataTypeEnum.dt_longtext:
                            sb.Append($"'{columnModel.ColumnName}',");
                            break;
                        default:
                            break;
                    }
                }
                //去掉最后一个,
                var res = sb.ToString();
                if (res.Length > 1)
                {
                    res = res.Substring(0, res.Length - 1);
                }
                return res;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static string Get_LikeQueryAttrsName(List<ColumnModel> columnModelList, GenerateCodeParam param)
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                /*
                  [模糊查询字段名]:请输入任务编码/原料型号/产品代码
                 */
                List<ColumnModel> newList = ListHelper.RemoveForPageTableListQueryAttributes(columnModelList);
                sb.Append("请输入");
                foreach (var columnModel in newList)
                {
                    //获取数据类型
                    DataTypeEnum enumDT = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType.ToString());
                    switch (enumDT)
                    {
                        case DataTypeEnum.dt_nvarchar:
                        case DataTypeEnum.dt_varchar:
                        case DataTypeEnum.dt_longtext:
                            sb.Append($"{columnModel.Description}/");
                            break;
                        default:
                            break;
                    }
                }
                //去掉最后一个,
                var res = sb.ToString();
                res = res.Substring(0, res.Length - 1);
                return res;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// é¡µé¢è¡¨æ ¼åˆ—显示
@@ -2334,8 +2407,7 @@
                /*
                  materialCode: res.materialCode,
                 */
                List<ColumnModel> newList = ListHelper.RemoveForPageAddFormAttributes(columnModelList);
                foreach (var columnModel in newList)
                foreach (var columnModel in columnModelList)
                {
                    //首字母小写
                    var low_prop_ColumnName = CommonHelper.FirstLowercase(columnModel.ColumnName);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/PredicateExtensions/PredicateExtensions.cs
@@ -77,6 +77,47 @@
            return finalExpression;
        }
        ///// <summary>
        ///// (模糊查询)拼接成 c.Name.contains("1111")||c.Code.Contains("1111")||c.Address.Contains("1111")) å½¢å¼
        ///// </summary>
        ///// <typeparam name="T"></typeparam>
        ///// <param name="options"></param>
        ///// <param name="fieldName"></param>
        ///// <returns></returns>
        //public static Expression<Func<T, bool>> GetConditionExpressionForFuzzyQuery<T>(string[] fieldNames, string fieldValue)
        //{
        //    try
        //    {
        //        ParameterExpression left = Expression.Parameter(typeof(T), "c");//c=>
        //        Expression expression = Expression.Constant(true);//修改为true,解决公共模糊查询的问题
        //        foreach (var fieldName in fieldNames)
        //        {
        //            try
        //            {
        //                Expression right = Expression.Call
        //                   (
        //                      Expression.Property(left, typeof(T).GetProperty(fieldName)),  //c.DataSourceName
        //                      typeof(string).GetMethod("Contains", new Type[] { typeof(string) }),// åå°„使用.Contains()方法
        //                      Expression.Constant(fieldValue)           // .Contains(fieldValue)
        //                   );
        //                expression = Expression.Or(right, expression);//c.AAA.contain("") || c.BBB.contain("")
        //            }
        //            catch (Exception ex)
        //            {
        //                throw new Exception($"参数{fieldName}匹配关键字查询时失败:" + ex.Message);
        //            }
        //        }
        //        Expression<Func<T, bool>> finalExpression
        //            = Expression.Lambda<Func<T, bool>>(expression, new ParameterExpression[] { left });
        //        return finalExpression;
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}
        /// <summary>
        /// (模糊查询)拼接成 c.Name.contains("1111")||c.Code.Contains("1111")||c.Address.Contains("1111")) å½¢å¼
        /// </summary>
@@ -86,35 +127,58 @@
        /// <returns></returns>
        public static Expression<Func<T, bool>> GetConditionExpressionForFuzzyQuery<T>(string[] fieldNames, string fieldValue)
        {
            try
            if (fieldNames == null || fieldNames.Length == 0)
            {
                ParameterExpression left = Expression.Parameter(typeof(T), "c");//c=>
                Expression expression = Expression.Constant(false);
                foreach (var fieldName in fieldNames)
                throw new ArgumentException("至少需要指定一个字段名", nameof(fieldNames));
            }
            if (string.IsNullOrEmpty(fieldValue))
            {
                // ç©ºå€¼æŸ¥è¯¢è¿”回总是返回false的表达式
                var parameter2 = Expression.Parameter(typeof(T), "c");
                return Expression.Lambda<Func<T, bool>>(Expression.Constant(false), parameter2);
            }
            ParameterExpression parameter = Expression.Parameter(typeof(T), "c");
            Expression? expression = null;
            foreach (var fieldName in fieldNames)
            {
                try
                {
                    try
                    var propertyInfo = typeof(T).GetProperty(fieldName);
                    if (propertyInfo == null)
                    {
                        Expression right = Expression.Call
                           (
                              Expression.Property(left, typeof(T).GetProperty(fieldName)),  //c.DataSourceName
                              typeof(string).GetMethod("Contains", new Type[] { typeof(string) }),// åå°„使用.Contains()方法
                              Expression.Constant(fieldValue)           // .Contains(fieldValue)
                           );
                        expression = Expression.Or(right, expression);//c.AAA.contain("") || c.BBB.contain("")
                        throw new ArgumentException($"类型 {typeof(T).Name} ä¸åŒ…含属性 {fieldName}");
                    }
                    catch (Exception ex)
                    if (propertyInfo.PropertyType != typeof(string))
                    {
                        throw new Exception($"参数{fieldName}匹配关键字查询时失败:" + ex.Message);
                        throw new ArgumentException($"属性 {fieldName} ä¸æ˜¯å­—符串类型");
                    }
                    var propertyAccess = Expression.Property(parameter, propertyInfo);
                    var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
                    var searchExpression = Expression.Call(propertyAccess, containsMethod!, Expression.Constant(fieldValue));
                    expression = expression == null
                        ? searchExpression
                        : Expression.OrElse(expression, searchExpression);
                }
                Expression<Func<T, bool>> finalExpression
                    = Expression.Lambda<Func<T, bool>>(expression, new ParameterExpression[] { left });
                return finalExpression;
                catch (Exception ex)
                {
                    throw new InvalidOperationException($"处理字段 {fieldName} æ—¶å‡ºé”™", ex);
                }
            }
            catch (Exception)
            if (expression == null)
            {
                throw;
                // å¦‚果所有字段都无效,返回总是返回false的表达式
                return Expression.Lambda<Func<T, bool>>(Expression.Constant(false), parameter);
            }
            return Expression.Lambda<Func<T, bool>>(expression, parameter);
        }
        /// <summary>