zs
2025-06-04 5a149d626ae8bc3fa4bddbb53f8caf40f51f6da6
Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
已添加5个文件
已重命名2个文件
已修改72个文件
4471 ■■■■■ 文件已修改
CommonDLL/公共前端组件/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/公共前端组件/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/公共前端组件/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/公共前端组件/src/utils/myHighQueryUtils.ts 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/components.d.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/utils/myformUtils.ts 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/utils/myHighQueryUtils.ts 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrder/Views/Pages/CallMaterialOrder/CallMaterialOrder.tsx 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrderRecord/Views/Pages/CallMaterialOrderRecord/CallMaterialOrderRecord.tsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/Config.ts 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx 341 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanDrawer.tsx 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanQueryDrawer.tsx 356 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/WorkPlan.tsx 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx 169 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/vite.lib.config.ts 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/GetWorkTaskInput.cs 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskCreateOrUpdateDtoBase.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskDto.cs 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskExportModel.cs 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkTaskAppService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs 508 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkTaskAppService.cs 193 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkTaskAutoMapperProfile.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/WorkPlan.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkTask/WorkTask.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkPlan.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkTask.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250521014306_Update2.Designer.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250521014306_Update2.cs 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkTaskController.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkTask导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/AppService/AppService_Generate.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.Designer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/IAppService模板.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Application/MapperProfiles/AutoMapperProfile模板.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Controller模板.txt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass模板.txt 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
管子线LMESDemo.cmsproj 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/¹«¹²Ç°¶Ë×é¼þ/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
@@ -6,7 +6,7 @@
  [key: string]: any
}>({
  // @ts-ignore
  name: 'BaseDrawer',
  name: 'BaseQueryDrawer',
  props: {
    // é®ç½©æ˜¯å¦å¯ç‚¹å‡»
    clickable: {
@@ -49,6 +49,8 @@
        >
          <el-drawer
            // modal-class={props.clickable ? styles.modal : ''}
            //将抽屉强制挂载到 body å…ƒç´ ä¸Šï¼Œç¡®ä¿æ ·å¼éš”离和滚动行为正常,不受嵌套页面的影响
            append-to-body="true"
            class={{
              [styles.informationDrawer]: true,
              // [styles.informationDrawerPosition]: props.clickable,
CommonDLL/¹«¹²Ç°¶Ë×é¼þ/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
@@ -1,15 +1,4 @@
.formStyle {
  .formItem {
    // ç§»é™¤å›ºå®šå®½åº¦é™åˆ¶
    width: auto !important;
    margin-right: 0 !important;
  }
  .formControl {
    flex: 1; // è®©æŽ§ä»¶å æ®å‰©ä½™ç©ºé—´
    min-width: 0; // å…è®¸æŽ§ä»¶æ”¶ç¼©
  }
  .formItemLabel {
    display: inline-flex;
    justify-content: flex-end;
@@ -25,17 +14,30 @@
      margin-left: 10px;
    }
  }
  :global(.cs-select) {
    width: 100%;
  }
  // ç§»é™¤å›ºå®šå®½åº¦è®¾ç½®
  :global(.cs-form--inline .cs-form-item) {
    width: auto !important;
    width: 46%;
  }
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0;
  }
  :global(.cs-date-editor) {
    width: 100%;
  }
}
.optionLabel {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.formitemPropsLabel {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  }
  
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0 !important;
  }
.itemDistance {
  margin-bottom: 20px !important;
}
CommonDLL/¹«¹²Ç°¶Ë×é¼þ/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js
@@ -2,6 +2,12 @@
export const FILTER_MODE_OPTIONS_STRING = [
    { label: '模糊查询', value: 1 },
    { label: '精准查询', value: 2 },
    { label: '不等于', value: 7 },
];
// å­—符串类查询(关键字查询专用)
export const FILTER_MODE_OPTIONS_STRING_KEY = [
  { label: '模糊查询', value: 1 },
  { label: '精准查询', value: 2 },
  ];
  // æ•°å­—类查询
export const FILTER_MODE_OPTIONS_NUM = [
CommonDLL/¹«¹²Ç°¶Ë×é¼þ/src/utils/myHighQueryUtils.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
//高级查询工具文件
 /**
 * ä¿å­˜å½“前高级查询数据,合并过滤后的数据并更新响应式查询对象
 * @param {Object} filteredData - è¿‡æ»¤åŽçš„æŸ¥è¯¢æ•°æ®å¯¹è±¡ï¼ŒåŒ…含用户输入的查询条件
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * commonSaveCurHighQueryData(
 *   { name: 'John', age: 30 },
 *   ref({}),
 *   ref({ searchVal: '', searchVal_FilterMode: 'contains' }),
 *   ref('name,age,email')
 * );
 */
export const commonSaveCurHighQueryData = (filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
  setValueForCurHighQueryData(_curHighQueryData, queryForm, _searchFormInputAttrs);
}
/**
 * ä¸ºå“åº”式查询数据对象设置基础查询值
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * setValueForCurHighQueryData(
 *   ref({}),
 *   ref({ searchVal: 'test', searchVal_FilterMode: 'equals' }),
 *   ref('name,age')
 * );
 * // _curHighQueryData.value å°†åŒ…含 searchVal, searchVal_FilterMode å’Œ str_searchFormInputAttrs
 */
export const setValueForCurHighQueryData = (_curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value.searchVal = queryForm.value.searchVal;
  _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * åˆå§‹åŒ–查询表单,设置默认值
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Array<Object>} arr - è¿‡æ»¤æ¨¡å¼é€‰é¡¹æ•°ç»„,每个选项包含value和label属性
 * @returns {void}
 * @example
 * initQueryForm(
 *   ref({}),
 *   ref('name,age'),
 *   [{ value: 'contains', label: '包含' }, { value: 'equals', label: '等于' }]
 * );
 * // queryForm.value å°†è¢«åˆå§‹åŒ–为 { searchVal: '', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'name,age' }
 */
export const initQueryForm = (queryForm, _searchFormInputAttrs, arr) => {
  queryForm.value.searchVal = '';
  queryForm.value.searchVal_FilterMode = arr[0]?.value || '';
  queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * èŽ·å–é«˜çº§æŸ¥è¯¢å¼¹å‡ºæ¡†çš„æŸ¥è¯¢å€¼ï¼Œè¿‡æ»¤æ— æ•ˆæ•°æ®å¹¶ç»„åˆå®Œæ•´æŸ¥è¯¢æ¡ä»¶
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = commonGetHighQueryForm(
 *   { status: 'active', category: 'books' },
 *   ref({ searchVal: 'javascript', searchVal_FilterMode: 'contains' }),
 *   ref('title,author')
 * );
 * // è¿”回 { status: 'active', category: 'books', searchVal: 'javascript', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'title,author' }
 */
export const commonGetHighQueryForm = (extraParams, queryForm, _searchFormInputAttrs) => {
  // è¿‡æ»¤æŽ‰ undefined çš„值
  let filteredData = Object.assign(
    {},
    ...Object.entries(extraParams).map(([key, value]) =>
      value !== undefined ? { [key]: value } : {}
    )
  );
  // ç»„合模糊查询
  filteredData.searchVal = queryForm.value.searchVal;
  filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value;
  return filteredData;
}
/**
 * æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•,获取过滤数据并保存到响应式对象
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = GetFilteredData(
 *   { type: 'article' },
 *   ref({ searchVal: 'news', searchVal_FilterMode: 'startsWith' }),
 *   ref('title,content'),
 *   ref({})
 * );
 * // è¿”回有效查询数据并更新 _curHighQueryData
 */
export const GetFilteredData = (extraParams, queryForm, _searchFormInputAttrs, _curHighQueryData) => {
  let filteredData = commonGetHighQueryForm(extraParams, queryForm, _searchFormInputAttrs);
  commonSaveCurHighQueryData(filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs);
  return filteredData;
}
HIAWms/hiawms_web/components.d.ts
@@ -29,14 +29,11 @@
    ElDropdown: typeof import('element-plus/es')['ElDropdown']
    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
    ElEmpty: typeof import('element-plus/es')['ElEmpty']
    ElForm: typeof import('element-plus/es')['ElForm']
    ElFormItem: typeof import('element-plus/es')['ElFormItem']
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
    ElMenu: typeof import('element-plus/es')['ElMenu']
    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
    ElOption: typeof import('element-plus/es')['ElOption']
    ElPagination: typeof import('element-plus/es')['ElPagination']
    ElPopover: typeof import('element-plus/es')['ElPopover']
@@ -44,7 +41,6 @@
    ElSelect: typeof import('element-plus/es')['ElSelect']
    ElTabPane: typeof import('element-plus/es')['ElTabPane']
    ElTabs: typeof import('element-plus/es')['ElTabs']
    ElTag: typeof import('element-plus/es')['ElTag']
    ElTooltip: typeof import('element-plus/es')['ElTooltip']
    ElUpload: typeof import('element-plus/es')['ElUpload']
    Menu: typeof import('./src/components/Menu/index.vue')['default']
HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
@@ -6,7 +6,7 @@
  [key: string]: any
}>({
  // @ts-ignore
  name: 'BaseDrawer',
  name: 'BaseQueryDrawer',
  props: {
    // é®ç½©æ˜¯å¦å¯ç‚¹å‡»
    clickable: {
@@ -49,6 +49,8 @@
        >
          <el-drawer
            // modal-class={props.clickable ? styles.modal : ''}
            //将抽屉强制挂载到 body å…ƒç´ ä¸Šï¼Œç¡®ä¿æ ·å¼éš”离和滚动行为正常,不受嵌套页面的影响
            append-to-body="true"
            class={{
              [styles.informationDrawer]: true,
              // [styles.informationDrawerPosition]: props.clickable,
HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
@@ -1,15 +1,4 @@
.formStyle {
  .formItem {
    // ç§»é™¤å›ºå®šå®½åº¦é™åˆ¶
    width: auto !important;
    margin-right: 0 !important;
  }
  .formControl {
    flex: 1; // è®©æŽ§ä»¶å æ®å‰©ä½™ç©ºé—´
    min-width: 0; // å…è®¸æŽ§ä»¶æ”¶ç¼©
  }
  .formItemLabel {
    display: inline-flex;
    justify-content: flex-end;
@@ -25,17 +14,30 @@
      margin-left: 10px;
    }
  }
  :global(.cs-select) {
    width: 100%;
  }
  // ç§»é™¤å›ºå®šå®½åº¦è®¾ç½®
  :global(.cs-form--inline .cs-form-item) {
    width: auto !important;
    width: 46%;
  }
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0;
  }
  :global(.cs-date-editor) {
    width: 100%;
  }
}
.optionLabel {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.formitemPropsLabel {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  }
  
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0 !important;
  }
.itemDistance {
  margin-bottom: 20px !important;
}
HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js
@@ -2,6 +2,12 @@
export const FILTER_MODE_OPTIONS_STRING = [
    { label: '模糊查询', value: 1 },
    { label: '精准查询', value: 2 },
    { label: '不等于', value: 7 },
];
// å­—符串类查询(关键字查询专用)
export const FILTER_MODE_OPTIONS_STRING_KEY = [
  { label: '模糊查询', value: 1 },
  { label: '精准查询', value: 2 },
  ];
  // æ•°å­—类查询
export const FILTER_MODE_OPTIONS_NUM = [
HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
//高级查询工具文件
 /**
 * ä¿å­˜å½“前高级查询数据,合并过滤后的数据并更新响应式查询对象
 * @param {Object} filteredData - è¿‡æ»¤åŽçš„æŸ¥è¯¢æ•°æ®å¯¹è±¡ï¼ŒåŒ…含用户输入的查询条件
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * commonSaveCurHighQueryData(
 *   { name: 'John', age: 30 },
 *   ref({}),
 *   ref({ searchVal: '', searchVal_FilterMode: 'contains' }),
 *   ref('name,age,email')
 * );
 */
export const commonSaveCurHighQueryData = (filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
  setValueForCurHighQueryData(_curHighQueryData, queryForm, _searchFormInputAttrs);
}
/**
 * ä¸ºå“åº”式查询数据对象设置基础查询值
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * setValueForCurHighQueryData(
 *   ref({}),
 *   ref({ searchVal: 'test', searchVal_FilterMode: 'equals' }),
 *   ref('name,age')
 * );
 * // _curHighQueryData.value å°†åŒ…含 searchVal, searchVal_FilterMode å’Œ str_searchFormInputAttrs
 */
export const setValueForCurHighQueryData = (_curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value.searchVal = queryForm.value.searchVal;
  _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * åˆå§‹åŒ–查询表单,设置默认值
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Array<Object>} arr - è¿‡æ»¤æ¨¡å¼é€‰é¡¹æ•°ç»„,每个选项包含value和label属性
 * @returns {void}
 * @example
 * initQueryForm(
 *   ref({}),
 *   ref('name,age'),
 *   [{ value: 'contains', label: '包含' }, { value: 'equals', label: '等于' }]
 * );
 * // queryForm.value å°†è¢«åˆå§‹åŒ–为 { searchVal: '', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'name,age' }
 */
export const initQueryForm = (queryForm, _searchFormInputAttrs, arr) => {
  queryForm.value.searchVal = '';
  queryForm.value.searchVal_FilterMode = arr[0]?.value || '';
  queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * èŽ·å–é«˜çº§æŸ¥è¯¢å¼¹å‡ºæ¡†çš„æŸ¥è¯¢å€¼ï¼Œè¿‡æ»¤æ— æ•ˆæ•°æ®å¹¶ç»„åˆå®Œæ•´æŸ¥è¯¢æ¡ä»¶
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = commonGetHighQueryForm(
 *   { status: 'active', category: 'books' },
 *   ref({ searchVal: 'javascript', searchVal_FilterMode: 'contains' }),
 *   ref('title,author')
 * );
 * // è¿”回 { status: 'active', category: 'books', searchVal: 'javascript', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'title,author' }
 */
export const commonGetHighQueryForm = (extraParams, queryForm, _searchFormInputAttrs) => {
  // è¿‡æ»¤æŽ‰ undefined çš„值
  let filteredData = Object.assign(
    {},
    ...Object.entries(extraParams).map(([key, value]) =>
      value !== undefined ? { [key]: value } : {}
    )
  );
  // ç»„合模糊查询
  filteredData.searchVal = queryForm.value.searchVal;
  filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value;
  return filteredData;
}
/**
 * æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•,获取过滤数据并保存到响应式对象
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = GetFilteredData(
 *   { type: 'article' },
 *   ref({ searchVal: 'news', searchVal_FilterMode: 'startsWith' }),
 *   ref('title,content'),
 *   ref({})
 * );
 * // è¿”回有效查询数据并更新 _curHighQueryData
 */
export const GetFilteredData = (extraParams, queryForm, _searchFormInputAttrs, _curHighQueryData) => {
  let filteredData = commonGetHighQueryForm(extraParams, queryForm, _searchFormInputAttrs);
  commonSaveCurHighQueryData(filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs);
  return filteredData;
}
HIAWms/hiawms_web/src/utils/myformUtils.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
//表单工具文件
/**
 * é€šç”¨é«˜çº§æŸ¥è¯¢è¡¨å•数据收集函数
 * @param {Array} formItems - è¡¨å•配置项数组
 * @param {Object} formData - è¡¨å•数据对象
 * @returns {Object} - æ”¶é›†çš„表单数据
 */
export const collectFormDataForHighQuery = (formItems, formData) => {
     const data = {};
  // éåŽ†è¡¨å•é…ç½®æ”¶é›†æ•°æ®
  formItems.forEach(item => {
    // æ”¶é›†åŸºç¡€å­—段
    data[item.prop] = formData.value[item.prop] || '';
    // æ”¶é›†è¿‡æ»¤æ¨¡å¼å­—段
    if (item.highSelectAttrs && item.highSelectAttrs.prop) {
      const filterModeProp = item.highSelectAttrs.prop;
      data[filterModeProp] = formData.value[filterModeProp] || '';
    }
  });
  return data;
  }
 /**
 * é‡ç½®é«˜çº§æŸ¥è¯¢çš„过滤模式
 * @param formItems - è¡¨å•配置项数组
 * @param formData - è¡¨å•数据对象
 */
 export const onResetForHighSelect = (formItems, formData) => {
    // éåŽ†æ‰€æœ‰è¡¨å•å­—æ®µ
    formItems.forEach(item => {
      // æ£€æŸ¥å­—段是否有高级查询的过滤模式配置
      if (item.highSelectAttrs && item.highSelectAttrs.prop) {
        const filterModeProp = item.highSelectAttrs.prop;
        const options = item.highSelectAttrs.options || [];
        // å¦‚果存在选项,则设置为第一个选项的值
        if (options.length > 0) {
          // å‡è®¾é€‰é¡¹æ ¼å¼ä¸º { value, label } æˆ–类似结构
          const firstValue = options[0].value !== undefined ? options[0].value : options[0];
          formData.value[filterModeProp] = firstValue;
        }
      }
    });
}
/**
 * é‡ç½®é«˜çº§æŸ¥è¯¢
 * @param formItems - è¡¨å•配置项数组
 * @param formData - è¡¨å•数据对象
 */
export const onResetForHighQuery = (formItems, formData) => {
    // 1. æ¸…空所有基础字段(不包含过滤模式字段)
    const baseFields = formItems.reduce((acc, item) => {
        acc[item.prop] = '';
        return acc;
        }, {});
        // 2. åº”用基础字段初始值
        formData.value = { ...baseFields };
}
/**
 * ä»Žè¡¨å•数据中提取有效属性(排除无效字段),提交保存表单数据时用
 * @param formData è¡¨å•数据对象
 * @param excludeFields éœ€è¦æŽ’除的字段列表(默认为 ['id'])
 * @returns å¤„理后的有效数据对象
 */
export const extractFormDataForOnConfirm = (formData) => {
   //动态获取 formData çš„æ‰€æœ‰å±žæ€§å€¼ï¼ˆæŽ’除无效属性,如 id)
  const data = Object.entries(formData.value).reduce((acc, [key, value]) => {
    // è¿‡æ»¤æŽ‰ä¸éœ€è¦æäº¤çš„属性(如 id,可根据实际需求调整)
    if (key !== 'id') {
      acc[key] = value
    }
    return acc
  }, {} as Record<string, any>)
  return data;
  };
  /**
 * ä»Žå“åº”数据中提取有效字段并赋值给表单数据,打开表单数据时用
 * @param res å“åº”数据
 * @param formData è¡¨å•数据引用
 * @param options é…ç½®é€‰é¡¹
 * @returns å¤„理后的表单数据
 */
export function extractAndAssignFormData(res,formData) {
     // æå–有效字段(排除不需要的属性,如临时字段、非表单字段)
     const { id, ...validFormData } = res; // ä¿ç•™ id å¯æ ¹æ®éœ€æ±‚调整
     // ç›´æŽ¥èµ‹å€¼ï¼ˆè‡ªåŠ¨è¿‡æ»¤æ— æ•ˆå±žæ€§ï¼‰
     formData.value = {
       ...validFormData, // è‡ªåŠ¨ç»§æ‰¿æ‰€æœ‰æœ‰æ•ˆå­—æ®µ
       // å¦‚需额外处理特定字段(如日期格式化),可在此补充
       // plannedStartTime: formatDate(res.plannedStartTime),
     };
  }
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterial/WmsMaterial.tsx
@@ -23,7 +23,7 @@
  ElFormItem,
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import WmsMaterialQueryDrawer from '../Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer'
interface RenderTableType {
@@ -123,7 +123,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -149,7 +149,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -375,7 +375,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.tsx
@@ -25,7 +25,7 @@
import { injectModel } from '@/libs/Provider/Provider' 
// å¼•入公共选项配置  
import {   
  FILTER_MODE_OPTIONS_STRING
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';  
 
interface RenderTableType { 
@@ -101,7 +101,7 @@
    // ç»„件挂载时获取枚举数据  
    onMounted(() => {  
      fetchEnumData()  
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || '';
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;   
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;  
    })  
@@ -122,7 +122,7 @@
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = '' 
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value; 
    } 
     //新版的导出方法 
@@ -337,7 +337,7 @@
                                placeholder="请选择" 
                                class={styles.formItem} 
                              > 
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption 
                                    key={option.value} 
                                    label={option.label} 
HIAWms/hiawms_web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx
@@ -22,7 +22,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -113,7 +113,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -139,7 +139,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -365,7 +365,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsInOutStockOrder/Views/Pages/WmsInOutStockOrder/WmsInOutStockOrder.tsx
@@ -27,7 +27,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -138,7 +138,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -164,7 +164,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -398,7 +398,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsInOutStockOrderDetail/Views/Pages/WmsInOutStockOrderDetail/WmsInOutStockOrderDetail.tsx
@@ -22,7 +22,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -116,7 +116,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -142,7 +142,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -369,7 +369,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsInOutStockRecord/Views/Pages/WmsInOutStockRecord/WmsInOutStockRecord.tsx
@@ -22,7 +22,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -119,7 +119,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -145,7 +145,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -339,7 +339,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStock/WmsMaterialStock.tsx
@@ -22,7 +22,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -149,7 +149,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -175,7 +175,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -412,7 +412,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx
@@ -21,7 +21,7 @@
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -149,7 +149,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -175,7 +175,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -379,7 +379,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.tsx
@@ -15,7 +15,7 @@
  getStoreDataList,
} from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import WmsAreaQueryDrawer from '../Dialog/WmsAreaQueryDrawer/WmsAreaQueryDrawer'
interface RenderTableType {
@@ -107,7 +107,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -133,7 +133,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -306,7 +306,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsPlace/WmsPlace.tsx
@@ -16,7 +16,7 @@
  getAisleDataList,
} from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
// å¼•入公共选项配置
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import WmsPlaceQueryDrawer from '../Dialog/WmsPlaceQueryDrawer/WmsPlaceQueryDrawer'
interface RenderTableType {
@@ -121,7 +121,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -147,7 +147,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -332,7 +332,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsStoreInfo/Views/Pages/WmsStore/WmsStore.tsx
@@ -11,7 +11,7 @@
import { vPermission } from '@/libs/Permission/Permission'
import { ElForm, ElFormItem, ElInput, ElOption, ElSelect } from 'element-plus'
import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import WmsStoreQueryDrawer from '../Dialog/WmsStoreQueryDrawer/WmsStoreQueryDrawer'
interface RenderTableType {
@@ -86,7 +86,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -112,7 +112,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -286,7 +286,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx
@@ -22,7 +22,7 @@
  ElFormItem,
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
import { FILTER_MODE_OPTIONS_STRING } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
import { FILTER_MODE_OPTIONS_STRING_KEY } from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'
interface RenderTableType {
  url?: string
@@ -139,7 +139,7 @@
    onMounted(() => {
      fetchEnumData()
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      _curHighQueryData.value.searchVal_FilterMode =
        queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =
@@ -165,7 +165,7 @@
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode =
        FILTER_MODE_OPTIONS_STRING[0]?.value || ''
        FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || ''
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    }
    //新版的导出方法
@@ -367,7 +367,7 @@
                  placeholder="请选择"
                  class={styles.formItem}
                >
                  {FILTER_MODE_OPTIONS_STRING.map((option) => (
                  {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                    <ElOption
                      key={option.value}
                      label={option.label}
PipeLineLems/pipelinelems_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
@@ -6,7 +6,7 @@
  [key: string]: any
}>({
  // @ts-ignore
  name: 'BaseDrawer',
  name: 'BaseQueryDrawer',
  props: {
    // é®ç½©æ˜¯å¦å¯ç‚¹å‡»
    clickable: {
@@ -49,6 +49,8 @@
        >
          <el-drawer
            // modal-class={props.clickable ? styles.modal : ''}
            //将抽屉强制挂载到 body å…ƒç´ ä¸Šï¼Œç¡®ä¿æ ·å¼éš”离和滚动行为正常,不受嵌套页面的影响
            append-to-body="true"
            class={{
              [styles.informationDrawer]: true,
              // [styles.informationDrawerPosition]: props.clickable,
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
@@ -1,15 +1,4 @@
.formStyle {
  .formItem {
    // ç§»é™¤å›ºå®šå®½åº¦é™åˆ¶
    width: auto !important;
    margin-right: 0 !important;
  }
  .formControl {
    flex: 1; // è®©æŽ§ä»¶å æ®å‰©ä½™ç©ºé—´
    min-width: 0; // å…è®¸æŽ§ä»¶æ”¶ç¼©
  }
  .formItemLabel {
    display: inline-flex;
    justify-content: flex-end;
@@ -25,17 +14,30 @@
      margin-left: 10px;
    }
  }
  :global(.cs-select) {
    width: 100%;
  }
  // ç§»é™¤å›ºå®šå®½åº¦è®¾ç½®
  :global(.cs-form--inline .cs-form-item) {
    width: auto !important;
    width: 46%;
  }
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0;
  }
  :global(.cs-date-editor) {
    width: 100%;
  }
}
.optionLabel {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.formitemPropsLabel {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  }
  
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0 !important;
  }
.itemDistance {
  margin-bottom: 20px !important;
}
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js
@@ -2,6 +2,12 @@
export const FILTER_MODE_OPTIONS_STRING = [
    { label: '模糊查询', value: 1 },
    { label: '精准查询', value: 2 },
    { label: '不等于', value: 7 },
];
// å­—符串类查询(关键字查询专用)
export const FILTER_MODE_OPTIONS_STRING_KEY = [
  { label: '模糊查询', value: 1 },
  { label: '精准查询', value: 2 },
  ];
  // æ•°å­—类查询
export const FILTER_MODE_OPTIONS_NUM = [
PipeLineLems/pipelinelems_web/src/utils/myHighQueryUtils.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
//高级查询工具文件
 /**
 * ä¿å­˜å½“前高级查询数据,合并过滤后的数据并更新响应式查询对象
 * @param {Object} filteredData - è¿‡æ»¤åŽçš„æŸ¥è¯¢æ•°æ®å¯¹è±¡ï¼ŒåŒ…含用户输入的查询条件
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * commonSaveCurHighQueryData(
 *   { name: 'John', age: 30 },
 *   ref({}),
 *   ref({ searchVal: '', searchVal_FilterMode: 'contains' }),
 *   ref('name,age,email')
 * );
 */
export const commonSaveCurHighQueryData = (filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
  setValueForCurHighQueryData(_curHighQueryData, queryForm, _searchFormInputAttrs);
}
/**
 * ä¸ºå“åº”式查询数据对象设置基础查询值
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {void}
 * @example
 * setValueForCurHighQueryData(
 *   ref({}),
 *   ref({ searchVal: 'test', searchVal_FilterMode: 'equals' }),
 *   ref('name,age')
 * );
 * // _curHighQueryData.value å°†åŒ…含 searchVal, searchVal_FilterMode å’Œ str_searchFormInputAttrs
 */
export const setValueForCurHighQueryData = (_curHighQueryData, queryForm, _searchFormInputAttrs) => {
  _curHighQueryData.value.searchVal = queryForm.value.searchVal;
  _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * åˆå§‹åŒ–查询表单,设置默认值
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Array<Object>} arr - è¿‡æ»¤æ¨¡å¼é€‰é¡¹æ•°ç»„,每个选项包含value和label属性
 * @returns {void}
 * @example
 * initQueryForm(
 *   ref({}),
 *   ref('name,age'),
 *   [{ value: 'contains', label: '包含' }, { value: 'equals', label: '等于' }]
 * );
 * // queryForm.value å°†è¢«åˆå§‹åŒ–为 { searchVal: '', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'name,age' }
 */
export const initQueryForm = (queryForm, _searchFormInputAttrs, arr) => {
  queryForm.value.searchVal = '';
  queryForm.value.searchVal_FilterMode = arr[0]?.value || '';
  queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
}
/**
 * èŽ·å–é«˜çº§æŸ¥è¯¢å¼¹å‡ºæ¡†çš„æŸ¥è¯¢å€¼ï¼Œè¿‡æ»¤æ— æ•ˆæ•°æ®å¹¶ç»„åˆå®Œæ•´æŸ¥è¯¢æ¡ä»¶
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = commonGetHighQueryForm(
 *   { status: 'active', category: 'books' },
 *   ref({ searchVal: 'javascript', searchVal_FilterMode: 'contains' }),
 *   ref('title,author')
 * );
 * // è¿”回 { status: 'active', category: 'books', searchVal: 'javascript', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'title,author' }
 */
export const commonGetHighQueryForm = (extraParams, queryForm, _searchFormInputAttrs) => {
  // è¿‡æ»¤æŽ‰ undefined çš„值
  let filteredData = Object.assign(
    {},
    ...Object.entries(extraParams).map(([key, value]) =>
      value !== undefined ? { [key]: value } : {}
    )
  );
  // ç»„合模糊查询
  filteredData.searchVal = queryForm.value.searchVal;
  filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
  filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value;
  return filteredData;
}
/**
 * æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•,获取过滤数据并保存到响应式对象
 * @param {Object} extraParams - é¢å¤–的查询参数对象,可能包含特殊查询条件
 * @param {Ref<Object>} queryForm - Vue响应式对象,存储表单输入的查询条件
 * @param {Ref<string>} _searchFormInputAttrs - Vue响应式字符串,存储查询表单的输入属性配置
 * @param {Ref<Object>} _curHighQueryData - Vue响应式对象,存储当前完整的查询条件
 * @returns {Object} ç»„合后的有效查询数据对象
 * @example
 * const queryData = GetFilteredData(
 *   { type: 'article' },
 *   ref({ searchVal: 'news', searchVal_FilterMode: 'startsWith' }),
 *   ref('title,content'),
 *   ref({})
 * );
 * // è¿”回有效查询数据并更新 _curHighQueryData
 */
export const GetFilteredData = (extraParams, queryForm, _searchFormInputAttrs, _curHighQueryData) => {
  let filteredData = commonGetHighQueryForm(extraParams, queryForm, _searchFormInputAttrs);
  commonSaveCurHighQueryData(filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs);
  return filteredData;
}
PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrder/Views/Pages/CallMaterialOrder/CallMaterialOrder.tsx
@@ -14,6 +14,12 @@
import { 
  getWmsEnumData 
} from '@/widgets/CallMaterialOrder/Models/Service/CallMaterialOrderDrawer' 
// å¼•入公共选项配置
import {
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
// å¼•入公共高级查询工具文件
import { commonSaveCurHighQueryData,setValueForCurHighQueryData,commonGetHighQueryForm,initQueryForm,GetFilteredData } from '@/utils/myHighQueryUtils';
import { 
  ElInput, 
  ElSelect, 
@@ -66,11 +72,7 @@
 
    //定义高级查询引用 
   const callMaterialOrderQueryDrawerRef=ref(null); 
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[]
    })
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([ 
     'DataIdentifier','MaterialMode','WmsRetResult','WmsTaskNo','CreatorName','LastModifierName','Remark' 
@@ -98,30 +100,30 @@
        console.error('获取枚举数据失败:', error) 
      } 
    } 
    // ç»„件挂载时获取枚举数据 
    onMounted(() => { 
      fetchEnumData() 
       resetQuery();
    }) 
     /*******************************************************[高级查询]开始********************************************************************************* */
     // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
     const queryForm = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // å®šä¹‰å“åº”式查询数据 
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[] });
     const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】) 
    const handleQueryForMain = async () => { 
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
       setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
      tableRef.value.getList(_curHighQueryData.value) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】) 
    const handleQuery = async (extraParams = {}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
       let filteredData = GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
      tableRef.value.getList(filteredData) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = ''
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
       initQueryForm(queryForm,_searchFormInputAttrs,FILTER_MODE_OPTIONS_STRING_KEY);
       setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
    } 
     //新版的导出方法 
     const handleExport=()=>{ 
@@ -129,31 +131,9 @@
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³• 
    const closeQuery = (extraParams={}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
       GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
    } 
    //保存查询值
    const commonSaveCurHighQueryData=(filteredData={})=>{
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value;
    }
     //获取高级查询弹出框的查询值
     const commonGetHighQueryForm=(extraParams={})=>{
      // è¿‡æ»¤æŽ‰ undefined çš„值
      let filteredData = Object.assign(
        {},
        ...Object.entries(extraParams).map(([key, value]) =>
          value !== undefined ? { [key]: value } : {}
        )
      )
      //组合模糊查询
      filteredData.searchVal = queryForm.value.searchVal
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      return filteredData;
    }
     /*******************************************************[高级查询]结束********************************************************************************* */
    
 
    /** 
@@ -335,6 +315,21 @@
                /> 
                </el-tooltip> 
              </ElFormItem> 
              <ElFormItem label="" style="width:100px;">
                   <ElSelect
                                v-model={queryForm.value.searchVal_FilterMode}
                                placeholder="请选择"
                                class={styles.formItem}
                              >
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption
                                    key={option.value}
                                    label={option.label}
                                    value={option.value}
                                  />
                                ))}
                              </ElSelect>
              </ElFormItem>
              <IconButton type="primary" icon="search" onClick={handleQueryForMain}> 
                æŸ¥è¯¢ 
              </IconButton> 
PipeLineLems/pipelinelems_web/src/widgets/CallMaterialOrderRecord/Views/Pages/CallMaterialOrderRecord/CallMaterialOrderRecord.tsx
@@ -25,7 +25,7 @@
import { injectModel } from '@/libs/Provider/Provider' 
// å¼•入公共选项配置  
import {   
  FILTER_MODE_OPTIONS_STRING
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';  
 
interface RenderTableType { 
@@ -108,7 +108,7 @@
    // ç»„件挂载时获取枚举数据  
    onMounted(() => {  
      fetchEnumData()  
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || '';
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;   
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;  
    })  
@@ -129,7 +129,7 @@
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = '' 
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING_KEY[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value; 
    } 
     //新版的导出方法 
@@ -337,7 +337,7 @@
                                placeholder="请选择" 
                                class={styles.formItem} 
                              > 
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption 
                                    key={option.value} 
                                    label={option.label} 
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts
@@ -1,6 +1,6 @@
import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' 
import { injectModel } from '@/libs/Provider/Provider' 
import { WmsMaterialContainer } from '../Models/PipeAccessoryAssembly'
import { PipeAccessoryAssembly } from '../Models/PipeAccessoryAssembly'
import { ElMessage } from 'element-plus' 
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
import { useFile } from './File' 
@@ -9,8 +9,8 @@
  row: any 
  index: number 
export const useWmsMaterialContainer = (props: any, ctx?: any) => {
  const wmsMaterialContainer = injectModel<WmsMaterialContainer>('wmsMaterialContainer')
export const usePipeAccessoryAssembly = (props: any, ctx?: any) => {
  const PipeAccessoryAssembly = injectModel<PipeAccessoryAssembly>('PipeAccessoryAssembly')
  const { exportFile } = useFile() 
  /** 
   * å¤´éƒ¨é…ç½® 
@@ -19,7 +19,7 @@
  /** 
   * åŠ¨æ€åˆ—é…ç½® 
   */ 
  const wmsMaterialContainerColumns = ref<Record<string, any>>([])
  const PipeAccessoryAssemblyColumns = ref<Record<string, any>>([])
  /** 
   * æœç´¢å€¼ 
   */ 
@@ -118,7 +118,7 @@
    // { 
    //   label: '创建副本', 
    //   fn: async ({ row }: CurrentType) => { 
    //     await wmsMaterialContainer.cloneData([row.id])
    //     await PipeAccessoryAssembly.cloneData([row.id])
    //     ElMessage.success('创建副本成功') 
    //     tableRef.value?.getList() 
    //   }, 
@@ -133,7 +133,7 @@
          `是否删除${names.length ? names.join(',') : c.row.materialId}` 
        ).then(async () => { 
          const ids = selection.value.map((item: { id: string }) => item.id) 
          await wmsMaterialContainer.deleteWmsMaterialContainers(ids.length ? ids : [c.row.id])
          await PipeAccessoryAssembly.deletePipeAccessoryAssemblys(ids.length ? ids : [c.row.id])
          ElMessage.success('删除成功') 
          tableRef.value.getList() 
        }) 
@@ -142,11 +142,77 @@
    }, 
  ] 
 
  //下发法兰冲码
  const onSendFlangeCode = () => {
    const names = selection.value.map((item: { dataIdentifier: string }) => item.dataIdentifier)
    if(names.length==0){
      ElMessage.warning('请选择一条记录');
      return;
    }
    if(names.length>1){
      ElMessage.warning('请只能选择一条记录');
      return;
    }
    ConfirmBox(
      `是否要下发法兰冲码${names.length ? names.join(',') : ''}`
    ).then(async () => {
      // èŽ·å–é€‰ä¸­çš„ç¬¬ä¸€æ¡è®°å½•
  const selectedItem = selection.value[0];
  // æž„建参数对象
  const param = {
    Son_TaskCode: selectedItem.son_TaskCode || '',  // å­ä»»åŠ¡ç¼–å·
    TaskCode: selectedItem.taskCode || '',        // ä»»åŠ¡ç¼–å·
    PipeSpecCode: selectedItem.pipeSpecCode || '',// ç®¡æ®µç¼–码
  };
     var ret= await PipeAccessoryAssembly.sendFlangeCode(param)
      if(ret.code=="200"){
        ElMessage.success('下发成功')
        tableRef.value.getList()
      }else{
        ElMessage.error('下发失败:'+ret.message)
      }
    })
  }
  //法兰冲码完工
  const onFinishSendFlangeCode = () => {
    const names = selection.value.map((item: { dataIdentifier: string }) => item.dataIdentifier)
    if(names.length==0){
      ElMessage.warning('请选择一条记录');
      return;
    }
    if(names.length>1){
      ElMessage.warning('请只能选择一条记录');
      return;
    }
    ConfirmBox(
      `是否要完工法兰冲码${names.length ? names.join(',') : ''}`
    ).then(async () => {
      // èŽ·å–é€‰ä¸­çš„ç¬¬ä¸€æ¡è®°å½•
  const selectedItem = selection.value[0];
  // æž„建参数对象
  const param = {
    processName: selectedItem.processName || '',        // ä»»åŠ¡ç¼–å·
    PipeSpecCode: selectedItem.pipeSpecCode || '',// ç®¡æ®µç¼–码
  };
     var ret= await PipeAccessoryAssembly.finishSendFlangeCode(param)
      if(ret.code=="200"){
        ElMessage.success('完工法兰冲码成功')
        tableRef.value.getList()
      }else{
        ElMessage.error('完工法兰冲码失败:'+ret.message)
      }
    })
  }
  const onCheck = (records: any) => { 
    selection.value = records 
  } 
 
  const onAddWmsMaterialContainer = () => {
  const onAddPipeAccessoryAssembly = () => {
    const params = tableRef.value?.getPaginationParams() 
    current.value = null 
    dialogConfig.visible = true 
@@ -164,7 +230,7 @@
    dialogConfigForQuery.title = '高级查询' 
  } 
  
  const onConfirmWmsMaterialContainer = async () => {
  const onConfirmPipeAccessoryAssembly = async () => {
    dialogConfig.visible = false 
    if (dialogConfig.isAdd) { 
      tableRef.value?.scrollToRow({ 
@@ -187,7 +253,7 @@
   */ 
  const onExport = (data={}) => { 
    //const params = tableRef.value?.getParams() 
    exportFile('/api/v1/HIAWms/wmsMaterialContainer/export', data, 'wmsMaterialContainer')
    exportFile('/api/v1/HIAWms/PipeAccessoryAssembly/export', data, 'PipeAccessoryAssembly')
  } 
 
  /** 
@@ -257,7 +323,7 @@
    current, 
    search, 
    sort, 
    wmsMaterialContainerColumns,
    PipeAccessoryAssemblyColumns,
    paginationParams, 
    headers, 
    onBeforeUpload, 
@@ -267,9 +333,11 @@
    onSearch, 
    onExport, 
    onRowClick, 
    onConfirmWmsMaterialContainer,
    onConfirmPipeAccessoryAssembly,
    onCheck, 
    onAddWmsMaterialContainer,
    onAdvancedQuery
    onAddPipeAccessoryAssembly,
    onAdvancedQuery,
    onSendFlangeCode,
    onFinishSendFlangeCode
  } 
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts
@@ -1,11 +1,13 @@
import { Base } from '@/libs/Base/Base' 
import { 
  deleteWmsMaterialContainers,
  addWmsMaterialContainer,
  // deletePipeAccessoryAssemblys,
  // addPipeAccessoryAssembly,
  sendFlangeCode,
  finishSendFlangeCode,
  cloneData, 
} from './Service/PipeAccessoryAssembly' 
 
export class WmsMaterialContainer extends Base<{ [key: string]: any }> {
export class PipeAccessoryAssembly extends Base<{ [key: string]: any }> {
  constructor() { 
    super({ 
      data: [], 
@@ -17,17 +19,32 @@
   * @param id 
   * @returns 
   */ 
  async deleteWmsMaterialContainers(ids: string[]) {
    return deleteWmsMaterialContainers(ids)
  async deletePipeAccessoryAssemblys(ids: string[]) {
   // return deletePipeAccessoryAssemblys(ids)
  } 
  /**
   * ä¸‹å‘法兰冲码
   * @param id
   * @returns
   */
  async sendFlangeCode(data: Record<string, any>) {
    return sendFlangeCode(data)
   }
     /**
   * å®Œå·¥æ³•兰冲码
   * @param id
   * @returns
   */
  async finishSendFlangeCode(data: Record<string, any>) {
    return finishSendFlangeCode(data)
   }
  /** 
   * æ·»åŠ æ•°æ® 
   * @param data 
   * @returns 
   */ 
  addWmsMaterialContainer(data: Record<string, any>) {
    return addWmsMaterialContainer(data)
  addPipeAccessoryAssembly(data: Record<string, any>) {
    //return addPipeAccessoryAssembly(data)
  } 
 
  /** 
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts
@@ -77,3 +77,18 @@
export const finishProduction  = (data: any) => {
  return request.post('/api/v1/PipeLineLems/WorkPlanPublic/finishProduction', data)
}
/**
 * ä¸‹å‘法兰冲码
 * @returns
 */
export const sendFlangeCode  = (data: any) => {
  return request.post('/api/v1/PipeLineLems/WorkPlanPublic/sendFlangeCode', data)
}
/**
 * å®Œå·¥æ³•兰冲码
 * @returns
 */
export const finishSendFlangeCode  = (data: any) => {
  return request.post('/api/v1/PipeLineLems/WorkPlanPublic/SendFlangeCode_FinishProduction', data)
}
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/Config.ts
@@ -5,23 +5,218 @@
    title: '序号', 
  }, 
  { 
  field: 'containerNo',
  title: '托盘编号',
  field: 'son_TaskCode',
  title: '子任务编码',
  width:160,
}, 
  field: 'materialId',
  title: '物料ID',
  field: 'taskCode',
  title: '任务编码',
  width:160,
}, 
  field: 'sort',
  title: '',
  field: 'pipeSpecCode',
  title: '管段编码',
  width:160,
},
{
  field: 'pipeSectionName',
  title: '管段名称',
  width:160,
},
{
  field: 'pipeSpecMode',
  title: '管段型号',
  width:160,
},
{
  field: 'processName',
  title: '工序名称',
  width:160,
},
{
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160,
},
{
  field: 'workPlanStatusDesc',
  title: '计划状态',
  width:160,
},
{
  field: 'callMaterialStatusDesc',
  title: '叫料状态',
  width:160,
},
{
  field: 'processRouteNumber',
  title: '工艺流向编号',
  width:160,
},
{
  field: 'dataIdentifier',
  title: '原料标识',
  width:160,
},
{
  field: 'materialMode',
  title: '原料型号',
  width:160,
},
{
  field: 'length',
  title: '长度(mm)',
  width:160,
},
{
  field: 'markingContent',
  title: '打码内容',
  width:160,
},
{
  field: 'markingPosition',
  title: '打码位置',
  width:160,
},
{
  field: 'cuttingPosition',
  title: '切割位置',
  width:160,
},
{
  field: 'quantity',
  title: '管段数量',
  width:160,
},
{
  field: 'flangeThickness',
  title: '法兰厚度(mm)',
  width:160,
},
{
  field: 'flangeInnerDiameter',
  title: '法兰直径(mm)',
  width:160,
},
{
  field: 'weldingHeatInput',
  title: '法兰公称压力',
  width:160,
},
{
  field: 'pipeAllowableStress',
  title: '法兰冲码内容',
  width:160,
},
{
  field: 'pipeDiameter',
  title: '套管长度(mm)',
  width:160,
},
{
  field: 'pipeWallThickness',
  title: '套管直径(mm)',
  width:160,
},
{
  field: 'factoryCode',
  title: '工厂代码',
  width:160,
},
{
  field: 'productCode',
  title: '产品代码',
  width:160,
},
{
  field: 'workstationCode',
  title: '工位代码',
  width:160,
},
{
  field: 'equipmentCode',
  title: '设备代码',
  width:160,
},
{
  field: 'prodLineCode',
  title: '产线编码',
  width:160,
},
{
  field: 'pipeFittingCode',
  title: '管件编码',
  width:160,
},
{
  field: 'preSerialNumber',
  title: '顺序号',
  width:160,
},
{
  field: 'outerDiameter',
  title: '外径(mm)',
  width:160,
},
{
  field: 'thickness',
  title: '壁厚(mm)',
  width:160,
},
{
  field: 'material',
  title: '材质',
  width:160,
},
{
  field: 'plannedStartTime',
  title: '计划开始时间',
  width:180,
},
{
  field: 'plannedEndTime',
  title: '计划完成时间',
  width:180,
},
{
  field: 'teamInfo',
  title: '班组信息',
  width:160,
},
{
  field: 'timestamp',
  title: '时间戳',
  width:160,
}, 
  field: 'creationTime', 
  title: '是否禁用',
  title: '创建时间',
  width:180,
}, 
  field: 'deletionTime',
  title: '',
  field: 'lastModificationTime',
  title: '修改时间',
  width:180,
},
{
  field: 'creatorName',
  title: '创建人',
  width:160,
},
{
  field: 'lastModifierName',
  title: '修改人',
  width:160,
},
{
  field: 'remark',
  title: '备注',
  width:160,
},  
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx
@@ -1,8 +1,13 @@
import { defineComponent, onMounted, ref } from 'vue'
import type { Ref } from 'vue'
import styles from './PipeAccessoryAssembly.module.scss'
import { usePipeAccessoryAssembly } from '../../../Controllers/PipeAccessoryAssembly'
import pipeImage from '@/images/pipe-assembly-drawing-example.png'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
import { columns } from './Config'
import TdButton from '@/components/TdButton/TdButton'
import BaseTable from '@/components/Table/Table'
import dayjs from 'dayjs'
import {
  ElInput,
  ElForm,
@@ -19,13 +24,48 @@
  instock,
  findSingleWorkPlanByFilter,
  startProduction,
  finishProduction
  finishProduction,
} from '@/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly'
import { Message } from '@element-plus/icons-vue/dist/types'
interface RenderTableType {
  url?: string
  dataSource: Ref<any[]>
  isDrag?: boolean
  isChecked?: boolean
  isHidePagination?: boolean
  params?: Record<string, any>
  autoHeight?: boolean
}
export default defineComponent({
  name: 'PipeAccessoryAssembly',
  setup() {
  setup(props, ctx) {
    const {
      dataSource,
      contextMenu,
      dialogConfig,
      dialogConfigForQuery,
      tableRef,
      current,
      search,
      sort,
      headers,
      onError,
      onSearch,
      onRowClick,
      // onConfirmWorkTask,
      onCheck,
      // onAddWorkTask,
      onAdvancedQuery,
      onExport,
      openDetail,
      onSuccess,
      onBeforeUpload,
      onSendFlangeCode,
      onFinishSendFlangeCode
    } = usePipeAccessoryAssembly(props, ctx)
    // æŸ¥è¯¢è¡¨å•数据
const queryForm = ref({
  pipeSpecCode: '',
@@ -41,8 +81,9 @@
  plannedEndTime: '',
  workstationCode: '',
  processName: '',
  equipmentCode: ''
      equipmentCode: '',
})
    // æ•°æ®æº
    const modelOptions = ref<Array<{ value: string; label: string }>>([])
@@ -95,10 +136,11 @@
      }))
    }
    const handleChange =async (value) => {
      console.log('输入内容确认:', value); // å¤±åŽ»ç„¦ç‚¹æˆ–å›žè½¦æ—¶è§¦å‘
      console.log('输入内容确认:', value) // å¤±åŽ»ç„¦ç‚¹æˆ–å›žè½¦æ—¶è§¦å‘
      if(value==''){
        initQueryForm();
        return;
        initQueryForm()
        return
      }
      // åœ¨æ­¤å¤„添加业务逻辑(如校验、提交等)
      const param={
@@ -107,17 +149,19 @@
        processName:'装配工序',
        processName_FilterMode:2,//精准查询
      }
      const workPlan = await findSingleWorkPlanByFilter(param);
      console.log('返回:'+workPlan);
      const workPlan = await findSingleWorkPlanByFilter(param)
      console.log('返回:' + workPlan)
      if(workPlan==''){
        ElMessage.error('没有找到数据');
        initQueryForm();
        ElMessage.error('没有找到数据')
        initQueryForm()
      }else{
        queryForm.value=workPlan;
        queryForm.value = workPlan
        refreshProcessRoute();
      }
    };
    }
    const initQueryForm=()=>{
      queryForm.value ={ pipeSpecCode: '',
      queryForm.value = {
        pipeSpecCode: '',
        processRouteNumber: '',
        taskCode: '',
        length: '',
@@ -130,69 +174,226 @@
        plannedEndTime: '',
        workstationCode: '',
        processName: '',
        equipmentCode: ''}
        equipmentCode: '',
    }
    // å¼€å·¥äº‹ä»¶å¤„理
    const startWork = () => {
      console.log('执行开工操作');
      dataSource.value=[] //清空表格数据
    }
//您的业务逻辑
const paramForProcessRoute= {
  processName: '法兰冲码工序',
  ProcessName_FilterMode:2,//精准查询
  pipeSpecCode: 'XXX',//默认先给个不存在的数据
  pipeSpecCode_FilterMode:2,//精准查询
}
let routeUrl=ref("");
    // åˆ·æ–°å·¥è‰ºä¿¡æ¯
    const refreshProcessRoute = () => {
      console.log('执行 åˆ·æ–°å·¥è‰ºä¿¡æ¯')
      if(queryForm.value.pipeSpecCode==''){
        ElMessage.error('请输入管段编码');
        ElMessage.error('请输入管段编码')
        return
      }
      ConfirmBox(
                `确定要将管段编码${queryForm.value.pipeSpecCode}开工吗`
              ).then(async () => {
      routeUrl.value="/api/v1/PipeLineLems/workTask/page";
      paramForProcessRoute.pipeSpecCode = queryForm.value.pipeSpecCode
      tableRef.value.getList(paramForProcessRoute)
    }
     // ä¸‹å‘法兰冲码
     const sendFlangeCode = () => {
      console.log('执行 ä¸‹å‘法兰冲码')
      if (queryForm.value.pipeSpecCode == '') {
        ElMessage.error('请输入管段编码')
        return
      }
       onSendFlangeCode();
    }
     // å®Œå·¥æ³•兰冲码
     const finishSendFlangeCode = () => {
      console.log('执行 å®Œå·¥æ³•兰冲码')
      if (queryForm.value.pipeSpecCode == '') {
        ElMessage.error('请输入管段编码')
        return
      }
      onFinishSendFlangeCode();
    }
    // å¼€å·¥äº‹ä»¶å¤„理
    const startWork = () => {
      console.log('执行开工操作')
      if (queryForm.value.pipeSpecCode == '') {
        ElMessage.error('请输入管段编码')
        return
      }
      ConfirmBox(`确定要将管段编码${queryForm.value.pipeSpecCode}开工吗`).then(
        async () => {
                //您的业务逻辑
                const param={
                  taskCode:queryForm.value.taskCode,
                };
                const ret = await startProduction(param);
      console.log('返回:'+ret);
                if(ret.code="200"){
                  ElMessage.success('开工成功');
                }else{
                  ElMessage.error('开工失败:'+ret.message);
                }
              })
          const ret = await startProduction(param)
          console.log('返回:' + ret)
          if ((ret.code = '200')) {
            ElMessage.success('开工成功')
          } else {
            ElMessage.error('开工失败:' + ret.message)
          }
        }
      )
    } 
    // å®Œå·¥äº‹ä»¶å¤„理
    const finishWork = () => {
      console.log('执行开工操作');
      console.log('执行开工操作')
      if(queryForm.value.pipeSpecCode==''){
        ElMessage.error('请输入管段编码');
        ElMessage.error('请输入管段编码')
        return
      }
      ConfirmBox(
                `确定要将管段编码${queryForm.value.pipeSpecCode}完工吗`
              ).then(async () => {
      ConfirmBox(`确定要将管段编码${queryForm.value.pipeSpecCode}完工吗`).then(
        async () => {
                //您的业务逻辑
                const param={
                  pipeSpecCode:queryForm.value.pipeSpecCode,
                  processName:queryForm.value.processName,
                };
                const ret = await finishProduction(param);
      console.log('返回:'+ret);
                if(ret.code="200"){
                  ElMessage.success('完工成功');
          }
          const ret = await finishProduction(param)
          console.log('返回:' + ret)
          if ((ret.code = '200')) {
            ElMessage.success('完工成功')
                }else{
                  ElMessage.error('完工失败:'+ret.message);
            ElMessage.error('完工失败:' + ret.message)
                }
              })
    }
    const tableData = ref([
      { sequence: 1, flangeA: 'RF-200-1.6MPa', flangeB: 'WN-200-1.6MPa' },
      { sequence: 2, flangeA: 'WN-250-2.5MPa', flangeB: 'SO-250-2.5MPa' },
      { sequence: 3, flangeA: 'PL-300-1.0MPa', flangeB: 'RF-300-1.0MPa' },
      { sequence: 4, flangeA: 'SO-150-2.0MPa', flangeB: 'WN-150-2.0MPa' },
      { sequence: 5, flangeA: 'RF-400-1.6MPa', flangeB: 'PL-400-1.6MPa' },
      { sequence: 6, flangeA: 'WN-200-4.0MPa', flangeB: 'SO-200-4.0MPa' },
      { sequence: 7, flangeA: 'SO-300-1.6MPa', flangeB: 'RF-300-1.6MPa' },
      { sequence: 8, flangeA: 'PL-250-1.0MPa', flangeB: 'WN-250-1.0MPa' },
      { sequence: 9, flangeA: 'RF-150-2.5MPa', flangeB: 'SO-150-2.5MPa' },
      { sequence: 10, flangeA: 'WN-400-2.0MPa', flangeB: 'PL-400-2.0MPa' }
    ]);
      )
    }
    /**
     * @returns è¡¨æ ¼
     */
    const RenderBaseTable = (props: RenderTableType) => {
      const {
        url,
        dataSource,
        isDrag,
        isChecked,
        isHidePagination,
        params,
        autoHeight,
        maxHeight,
      } = props
      return (
        <div
          class={{
            [styles.workTaskList]: true,
          }}
        >
          <BaseTable
            ref={tableRef}
            url={url}
            sortUrlTpl="/api/v1/PipeLineLems/workTask/{id}/adjustsort/{sort}"
            v-model:dataSource={dataSource.value}
            columns={columns}
            contextMenu={contextMenu}
            params={params}
            isDrag={isDrag}
            isChecked={isChecked}
            autoHeight={autoHeight}
            maxHeight={maxHeight}
            onCheck={onCheck}
            onRowClick={onRowClick}
            isHidePagination={isHidePagination}
            pageSize={20}
            v-slots={{
              plannedStartTime: ({ row }: any) => {
                return (
                  <div>
                    {row.plannedStartTime != null
                      ? dayjs(row.plannedStartTime).format(
                          'YYYY-MM-DD HH:mm:ss'
                        )
                      : '-'}
                  </div>
                )
              },
              plannedEndTime: ({ row }: any) => {
                return (
                  <div>
                    {row.plannedEndTime != null
                      ? dayjs(row.plannedEndTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              creationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.creationTime != null
                      ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              lastModificationTime: ({ row }: any) => {
                return (
                  <div>
                    {row.lastModificationTime != null
                      ? dayjs(row.lastModificationTime).format(
                          'YYYY-MM-DD HH:mm:ss'
                        )
                      : '-'}
                  </div>
                )
              },
              isDeleted: ({ row }: any) => {
                return (
                  <div>
                    {row.isDeleted != null
                      ? row.isDeleted
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              deletionTime: ({ row }: any) => {
                return (
                  <div>
                    {row.deletionTime != null
                      ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss')
                      : '-'}
                  </div>
                )
              },
              isDisabled: ({ row }: any) => {
                return (
                  <div>
                    {row.isDisabled != null
                      ? row.isDisabled
                        ? '是'
                        : '否'
                      : '-'}
                  </div>
                )
              },
              name: ({ row }: any) => {
                return row?.name ? (
                  <TdButton
                    onClick={() => openDetail(row)}
                    text={<span style="color:#5a84ff">详情</span>}
                    icon="scale"
                    tip={row?.name}
                    hover
                  >
                    {row?.name}
                  </TdButton>
                ) : (
                  '-'
                )
              },
            }}
          ></BaseTable>
        </div>
      )
    }
    return () => {
      return (
@@ -209,8 +410,12 @@
                  />
                </ElFormItem>
          <div class={styles.actionButtons}>
            <ElButton type="warning" onClick={startWork}>开工</ElButton>
            <ElButton type="warning" onClick={finishWork}>完工</ElButton>
            <ElButton type="warning" onClick={startWork}>
              å¼€å·¥
            </ElButton>
            <ElButton type="warning" onClick={finishWork}>
              å®Œå·¥
            </ElButton>
            {/* <ElButton type="warning">暂停</ElButton>
            <ElButton type="warning">自动</ElButton>
            <ElButton type="warning">质检</ElButton> */}
@@ -218,7 +423,6 @@
          <h2 class={styles.blockTitle}>当前任务</h2>
          <ElForm label-position="left" >
                <ElFormItem label="物料流向&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;">
                  <ElInput
                    v-model={queryForm.value.processRouteNumber}
@@ -347,12 +551,35 @@
          {/* <div class="info-block">
            <h2 class="block-title">工艺信息</h2>
            <el-table stripe  v-model:dataSource={tableData}>
            <el-table stripe  :data={tableData}>
              <el-table-column prop="sequence" label="序"></el-table-column>
              <el-table-column prop="flangeA" label="法兰A"></el-table-column>
              <el-table-column prop="flangeB" label="法兰B"></el-table-column>
            </el-table>
          </div> */}
          <div class="info-block">
            <h2 class="block-title">工艺信息</h2>
            <div class={styles.actionButtons} style="margin-bottom:5px;">
              <ElButton type="warning" onClick={refreshProcessRoute}>
                åˆ·æ–°
              </ElButton>
              <ElButton type="warning" onClick={sendFlangeCode}>
                ä¸‹å‘法兰冲码
              </ElButton>
              <ElButton type="warning" onClick={finishSendFlangeCode}>
                å®Œå·¥æ³•兰冲码
              </ElButton>
            </div>
            <RenderBaseTable
              url={routeUrl.value}
              dataSource={dataSource}
              isChecked={true}
              isDrag={true}
              autoHeight={false}
              maxHeight="500px"
              params={paramForProcessRoute}
            />
          </div>
          <h2 class="block-title">图纸</h2>
          <img
            src={pipeImage}
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanDrawer.tsx
@@ -18,7 +18,8 @@
import {   
  BOOLEAN_OPTIONS_AddEdit  
} from '@/utils/commonOptionConstants';  
// å¼•入公共表单工具文件
import { extractFormDataForOnConfirm,extractAndAssignFormData } from '@/utils/myformUtils';
export const useWorkPlanDrawer = (props: any, ctx?: any) => { 
  const workPlanDrawer = injectModel<WorkPlanDrawer>('workPlanDrawer') 
  /** 
@@ -89,6 +90,48 @@
              rules: [{required: true, message: '任务编码不能为空', trigger: 'blur' }], 
                }, 
                { 
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                },
                {
                   label: '管段型号',
                   prop: 'pipeSpecMode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段型号',
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                },
                {
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                },
                {
                   label: '计划状态', 
                   prop: 'workPlanStatus', 
                   el: 'select', 
@@ -107,6 +150,13 @@
                   //disabled: disabled, 
                   placeholder: '请输入叫料状态', 
              rules: [{required: true, message: '叫料状态不能为空', trigger: 'blur' }], 
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                }, 
                { 
                   label: '原料标识', 
@@ -315,27 +365,6 @@
                   placeholder: '请输入产线编码', 
                }, 
                { 
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                },
                {
                   label: '管件编码', 
                   prop: 'pipeFittingCode', 
                   el: 'input', 
@@ -348,20 +377,6 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入顺序号', 
                },
                {
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                }, 
                { 
                   label: '外径(mm)', 
@@ -403,13 +418,6 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入材质', 
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                }, 
                { 
                   label: '计划开始时间', 
@@ -494,45 +502,7 @@
   */ 
  const onConfirm = async () => { 
    await formRef.value?.validate() 
    const data = {
      taskCode: formData.value.taskCode,
workPlanStatus: formData.value.workPlanStatus,
callMaterialStatus: formData.value.callMaterialStatus,
dataIdentifier: formData.value.dataIdentifier,
materialMode: formData.value.materialMode,
length: formData.value.length,
markingContent: formData.value.markingContent,
markingPosition: formData.value.markingPosition,
cuttingPosition: formData.value.cuttingPosition,
quantity: formData.value.quantity,
flangeThickness: formData.value.flangeThickness,
flangeInnerDiameter: formData.value.flangeInnerDiameter,
weldingHeatInput: formData.value.weldingHeatInput,
pipeAllowableStress: formData.value.pipeAllowableStress,
pipeDiameter: formData.value.pipeDiameter,
pipeWallThickness: formData.value.pipeWallThickness,
factoryCode: formData.value.factoryCode,
productCode: formData.value.productCode,
workstationCode: formData.value.workstationCode,
equipmentCode: formData.value.equipmentCode,
prodLineCode: formData.value.prodLineCode,
shipNumber: formData.value.shipNumber,
projectNumber: formData.value.projectNumber,
processName: formData.value.processName,
pipeFittingCode: formData.value.pipeFittingCode,
preSerialNumber: formData.value.preSerialNumber,
pipeSpecCode: formData.value.pipeSpecCode,
pipeSectionName: formData.value.pipeSectionName,
outerDiameter: formData.value.outerDiameter,
thickness: formData.value.thickness,
material: formData.value.material,
processRouteNumber: formData.value.processRouteNumber,
plannedStartTime: formData.value.plannedStartTime,
plannedEndTime: formData.value.plannedEndTime,
teamInfo: formData.value.teamInfo,
timestamp: formData.value.timestamp,
remark: formData.value.remark,
    }
    const data=extractFormDataForOnConfirm(formData);
    if (!current.value) { 
      await workPlanDrawer.addWorkPlan(data) 
    } else { 
@@ -581,46 +551,7 @@
    if (current.value) { 
      const res = await workPlanDrawer.getWorkPlanDetail(current.value) 
 
      formData.value = {
        taskCode: res.taskCode,
workPlanStatus: res.workPlanStatus,
callMaterialStatus: res.callMaterialStatus,
dataIdentifier: res.dataIdentifier,
materialMode: res.materialMode,
length: res.length,
markingContent: res.markingContent,
markingPosition: res.markingPosition,
cuttingPosition: res.cuttingPosition,
quantity: res.quantity,
flangeThickness: res.flangeThickness,
flangeInnerDiameter: res.flangeInnerDiameter,
weldingHeatInput: res.weldingHeatInput,
pipeAllowableStress: res.pipeAllowableStress,
pipeDiameter: res.pipeDiameter,
pipeWallThickness: res.pipeWallThickness,
factoryCode: res.factoryCode,
productCode: res.productCode,
workstationCode: res.workstationCode,
equipmentCode: res.equipmentCode,
prodLineCode: res.prodLineCode,
shipNumber: res.shipNumber,
projectNumber: res.projectNumber,
processName: res.processName,
pipeFittingCode: res.pipeFittingCode,
preSerialNumber: res.preSerialNumber,
pipeSpecCode: res.pipeSpecCode,
pipeSectionName: res.pipeSectionName,
outerDiameter: res.outerDiameter,
thickness: res.thickness,
material: res.material,
processRouteNumber: res.processRouteNumber,
plannedStartTime: res.plannedStartTime,
plannedEndTime: res.plannedEndTime,
teamInfo: res.teamInfo,
timestamp: res.timestamp,
remark: res.remark,
        id: res.id,
      }
      extractAndAssignFormData(res,formData);
      disabled.value = true 
      updateCheckData() 
    } else { 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanQueryDrawer.tsx
@@ -20,6 +20,8 @@
  FILTER_MODE_OPTIONS_NUM, 
  FILTER_MODE_OPTIONS_BOOL 
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'; 
// å¼•入公共表单工具文件
import { collectFormDataForHighQuery,onResetForHighSelect,onResetForHighQuery } from '@/utils/myformUtils';
import {  
  BOOLEAN_OPTIONS 
} from '@/utils/commonOptionConstants'; 
@@ -101,6 +103,84 @@
                   } 
                }, 
                { 
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                   highSelectAttrs:{
                     prop: 'pipeSpecCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                   highSelectAttrs:{
                     prop: 'pipeSectionName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段型号',
                   prop: 'pipeSpecMode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段型号',
                   highSelectAttrs:{
                     prop: 'pipeSpecMode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                   highSelectAttrs:{
                     prop: 'processName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                   highSelectAttrs:{
                     prop: 'shipNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                   highSelectAttrs:{
                     prop: 'projectNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '计划状态', 
                   prop: 'workPlanStatus', 
                   el: 'select', 
@@ -128,6 +208,19 @@
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_BOOL 
                   }
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                   highSelectAttrs:{
                     prop: 'processRouteNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   } 
                }, 
                { 
@@ -437,45 +530,6 @@
                   } 
                }, 
                { 
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                   highSelectAttrs:{
                     prop: 'shipNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                   highSelectAttrs:{
                     prop: 'projectNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                   highSelectAttrs:{
                     prop: 'processName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管件编码', 
                   prop: 'pipeFittingCode', 
                   el: 'input', 
@@ -496,32 +550,6 @@
                   placeholder: '请输入顺序号', 
                   highSelectAttrs:{ 
                     prop: 'preSerialNumber_FilterMode', 
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                   highSelectAttrs:{
                     prop: 'pipeSpecCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                   highSelectAttrs:{
                     prop: 'pipeSectionName_FilterMode',
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_STRING 
@@ -579,19 +607,6 @@
                   placeholder: '请输入材质', 
                   highSelectAttrs:{ 
                     prop: 'material_FilterMode', 
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                   highSelectAttrs:{
                     prop: 'processRouteNumber_FilterMode',
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_STRING 
@@ -733,93 +748,11 @@
    const check = isEqual(initiateData.value, data) 
    return check 
  } 
  const commonGetFormData=()=>{
    const data = {
      taskCode: formData.value.taskCode || '',
taskCode_FilterMode: formData.value.taskCode_FilterMode || '',
workPlanStatus: formData.value.workPlanStatus || '',
workPlanStatus_FilterMode: formData.value.workPlanStatus_FilterMode || '',
callMaterialStatus: formData.value.callMaterialStatus || '',
callMaterialStatus_FilterMode: formData.value.callMaterialStatus_FilterMode || '',
dataIdentifier: formData.value.dataIdentifier || '',
dataIdentifier_FilterMode: formData.value.dataIdentifier_FilterMode || '',
materialMode: formData.value.materialMode || '',
materialMode_FilterMode: formData.value.materialMode_FilterMode || '',
length: formData.value.length || '',
length_FilterMode: formData.value.length_FilterMode || '',
markingContent: formData.value.markingContent || '',
markingContent_FilterMode: formData.value.markingContent_FilterMode || '',
markingPosition: formData.value.markingPosition || '',
markingPosition_FilterMode: formData.value.markingPosition_FilterMode || '',
cuttingPosition: formData.value.cuttingPosition || '',
cuttingPosition_FilterMode: formData.value.cuttingPosition_FilterMode || '',
quantity: formData.value.quantity || '',
quantity_FilterMode: formData.value.quantity_FilterMode || '',
flangeThickness: formData.value.flangeThickness || '',
flangeThickness_FilterMode: formData.value.flangeThickness_FilterMode || '',
flangeInnerDiameter: formData.value.flangeInnerDiameter || '',
flangeInnerDiameter_FilterMode: formData.value.flangeInnerDiameter_FilterMode || '',
weldingHeatInput: formData.value.weldingHeatInput || '',
weldingHeatInput_FilterMode: formData.value.weldingHeatInput_FilterMode || '',
pipeAllowableStress: formData.value.pipeAllowableStress || '',
pipeAllowableStress_FilterMode: formData.value.pipeAllowableStress_FilterMode || '',
pipeDiameter: formData.value.pipeDiameter || '',
pipeDiameter_FilterMode: formData.value.pipeDiameter_FilterMode || '',
pipeWallThickness: formData.value.pipeWallThickness || '',
pipeWallThickness_FilterMode: formData.value.pipeWallThickness_FilterMode || '',
factoryCode: formData.value.factoryCode || '',
factoryCode_FilterMode: formData.value.factoryCode_FilterMode || '',
productCode: formData.value.productCode || '',
productCode_FilterMode: formData.value.productCode_FilterMode || '',
workstationCode: formData.value.workstationCode || '',
workstationCode_FilterMode: formData.value.workstationCode_FilterMode || '',
equipmentCode: formData.value.equipmentCode || '',
equipmentCode_FilterMode: formData.value.equipmentCode_FilterMode || '',
prodLineCode: formData.value.prodLineCode || '',
prodLineCode_FilterMode: formData.value.prodLineCode_FilterMode || '',
shipNumber: formData.value.shipNumber || '',
shipNumber_FilterMode: formData.value.shipNumber_FilterMode || '',
projectNumber: formData.value.projectNumber || '',
projectNumber_FilterMode: formData.value.projectNumber_FilterMode || '',
processName: formData.value.processName || '',
processName_FilterMode: formData.value.processName_FilterMode || '',
pipeFittingCode: formData.value.pipeFittingCode || '',
pipeFittingCode_FilterMode: formData.value.pipeFittingCode_FilterMode || '',
preSerialNumber: formData.value.preSerialNumber || '',
preSerialNumber_FilterMode: formData.value.preSerialNumber_FilterMode || '',
pipeSpecCode: formData.value.pipeSpecCode || '',
pipeSpecCode_FilterMode: formData.value.pipeSpecCode_FilterMode || '',
pipeSectionName: formData.value.pipeSectionName || '',
pipeSectionName_FilterMode: formData.value.pipeSectionName_FilterMode || '',
outerDiameter: formData.value.outerDiameter || '',
outerDiameter_FilterMode: formData.value.outerDiameter_FilterMode || '',
thickness: formData.value.thickness || '',
thickness_FilterMode: formData.value.thickness_FilterMode || '',
material: formData.value.material || '',
material_FilterMode: formData.value.material_FilterMode || '',
processRouteNumber: formData.value.processRouteNumber || '',
processRouteNumber_FilterMode: formData.value.processRouteNumber_FilterMode || '',
plannedStartTime: formData.value.plannedStartTime || '',
plannedEndTime: formData.value.plannedEndTime || '',
teamInfo: formData.value.teamInfo || '',
teamInfo_FilterMode: formData.value.teamInfo_FilterMode || '',
timestamp: formData.value.timestamp || '',
timestamp_FilterMode: formData.value.timestamp_FilterMode || '',
creationTime: formData.value.creationTime || '',
lastModificationTime: formData.value.lastModificationTime || '',
creatorName: formData.value.creatorName || '',
creatorName_FilterMode: formData.value.creatorName_FilterMode || '',
lastModifierName: formData.value.lastModifierName || '',
lastModifierName_FilterMode: formData.value.lastModifierName_FilterMode || '',
remark: formData.value.remark || '',
remark_FilterMode: formData.value.remark_FilterMode || '',
    }
    return data;
  }
  const onClose = (done: () => void) => { 
    if (visible.value) { 
      visible.value = false 
      const data =commonGetFormData();
      const data =collectFormDataForHighQuery(formItems,formData);
      ctx.emit('close', data) 
    } 
  } 
@@ -827,99 +760,20 @@
   * ç¡®è®¤æŸ¥è¯¢ 
   */ 
  const onConfirmQuery = async () => { 
    const data =commonGetFormData();
    const data =collectFormDataForHighQuery(formItems,formData);
    ctx.emit('confirmQuery', data) 
  } 
  /**  
   * é‡ç½®å…¬å…±select查询
   */
  const onResetForHighSelect = async () => {
    formData.value.taskCode_FilterMode = 1
formData.value.workPlanStatus_FilterMode = 2
formData.value.callMaterialStatus_FilterMode = 2
formData.value.dataIdentifier_FilterMode = 1
formData.value.materialMode_FilterMode = 1
formData.value.length_FilterMode = 2
formData.value.markingContent_FilterMode = 1
formData.value.markingPosition_FilterMode = 2
formData.value.cuttingPosition_FilterMode = 2
formData.value.quantity_FilterMode = 2
formData.value.flangeThickness_FilterMode = 2
formData.value.flangeInnerDiameter_FilterMode = 2
formData.value.weldingHeatInput_FilterMode = 1
formData.value.pipeAllowableStress_FilterMode = 1
formData.value.pipeDiameter_FilterMode = 2
formData.value.pipeWallThickness_FilterMode = 2
formData.value.factoryCode_FilterMode = 1
formData.value.productCode_FilterMode = 1
formData.value.workstationCode_FilterMode = 1
formData.value.equipmentCode_FilterMode = 1
formData.value.prodLineCode_FilterMode = 1
formData.value.shipNumber_FilterMode = 1
formData.value.projectNumber_FilterMode = 1
formData.value.processName_FilterMode = 1
formData.value.pipeFittingCode_FilterMode = 1
formData.value.preSerialNumber_FilterMode = 1
formData.value.pipeSpecCode_FilterMode = 1
formData.value.pipeSectionName_FilterMode = 1
formData.value.outerDiameter_FilterMode = 2
formData.value.thickness_FilterMode = 2
formData.value.material_FilterMode = 1
formData.value.processRouteNumber_FilterMode = 1
formData.value.teamInfo_FilterMode = 1
formData.value.timestamp_FilterMode = 1
formData.value.creatorName_FilterMode = 1
formData.value.lastModifierName_FilterMode = 1
formData.value.remark_FilterMode = 1
  }
  /**
   * é‡ç½®æŸ¥è¯¢
    * é‡ç½®æŸ¥è¯¢ - ä¼˜åŒ–版
   */ 
  const onReset = async () => { 
    formData.value = {}
    onResetForHighSelect();//重置公共select查询
    formData.value.taskCode = ''
formData.value.workPlanStatus = ''
formData.value.callMaterialStatus = ''
formData.value.dataIdentifier = ''
formData.value.materialMode = ''
formData.value.length = ''
formData.value.markingContent = ''
formData.value.markingPosition = ''
formData.value.cuttingPosition = ''
formData.value.quantity = ''
formData.value.flangeThickness = ''
formData.value.flangeInnerDiameter = ''
formData.value.weldingHeatInput = ''
formData.value.pipeAllowableStress = ''
formData.value.pipeDiameter = ''
formData.value.pipeWallThickness = ''
formData.value.factoryCode = ''
formData.value.productCode = ''
formData.value.workstationCode = ''
formData.value.equipmentCode = ''
formData.value.prodLineCode = ''
formData.value.shipNumber = ''
formData.value.projectNumber = ''
formData.value.processName = ''
formData.value.pipeFittingCode = ''
formData.value.preSerialNumber = ''
formData.value.pipeSpecCode = ''
formData.value.pipeSectionName = ''
formData.value.outerDiameter = ''
formData.value.thickness = ''
formData.value.material = ''
formData.value.processRouteNumber = ''
formData.value.plannedStartTime = ''
formData.value.plannedEndTime = ''
formData.value.teamInfo = ''
formData.value.timestamp = ''
formData.value.creationTime = ''
formData.value.lastModificationTime = ''
formData.value.creatorName = ''
formData.value.lastModifierName = ''
formData.value.remark = ''
    //向父组件发送自定义事件
        // 1. æ¸…空所有基础字段(不包含过滤模式字段),应用基础字段初始值
        onResetForHighQuery(formItems,formData);
        // 2. ä½¿ç”¨åŽŸæœ‰æ–¹æ³•é‡ç½®è¿‡æ»¤æ¨¡å¼å­—æ®µ
        onResetForHighSelect(formItems,formData);
        // 3. å‘父组件发送自定义事件
    ctx.emit('restQuery'); 
  } 
 
@@ -954,7 +808,7 @@
 
  } 
  commonQueryEnumForFrom() 
  onResetForHighSelect();//重置公共select查询
  onResetForHighSelect(formItems,formData);//重置公共select查询
  /** 
   * å¼¹çª—打开获取详情 
   */ 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts
@@ -20,8 +20,23 @@
  width:160, 
}, 
  field: 'pipeSpecMode',
  title: '管段型号',
  width:160,
},
{
  field: 'processName', 
  title: '工序名称', 
  width:160,
},
{
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160, 
}, 
@@ -32,6 +47,11 @@
  field: 'callMaterialStatusDesc', 
  title: '叫料状态', 
  width:160,
},
{
  field: 'processRouteNumber',
  title: '工艺流向编号',
  width:160, 
}, 
@@ -125,17 +145,6 @@
  width:160, 
}, 
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160,
},
{
  field: 'pipeFittingCode', 
  title: '管件编码', 
  width:160, 
@@ -145,7 +154,6 @@
  title: '顺序号', 
  width:160, 
}, 
  field: 'outerDiameter', 
  title: '外径(mm)', 
@@ -159,11 +167,6 @@
  field: 'material', 
  title: '材质', 
  width:160,
},
{
  field: 'processRouteNumber',
  title: '工艺流向编号',
  width:160, 
}, 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/WorkPlan.tsx
@@ -25,8 +25,10 @@
import { injectModel } from '@/libs/Provider/Provider' 
// å¼•入公共选项配置  
import {   
  FILTER_MODE_OPTIONS_STRING
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';  
// å¼•入公共高级查询工具文件
import { commonSaveCurHighQueryData,setValueForCurHighQueryData,commonGetHighQueryForm,initQueryForm,GetFilteredData } from '@/utils/myHighQueryUtils';
 
interface RenderTableType { 
  url?: string 
@@ -69,17 +71,12 @@
 
    //定义高级查询引用 
   const workPlanQueryDrawerRef=ref(null); 
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    })
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([ 
     'TaskCode','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','ProdLineCode','ShipNumber','ProjectNumber','ProcessName','PipeFittingCode','PreSerialNumber','PipeSpecCode','PipeSectionName','Material','ProcessRouteNumber','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark'
     'TaskCode','PipeSpecCode','PipeSectionName','PipeSpecMode','ProcessName','ShipNumber','ProjectNumber','ProcessRouteNumber','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','ProdLineCode','PipeFittingCode','PreSerialNumber','Material','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark'
    ]); 
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/产线编码/船号/项目号/工序名称/管件编码/顺序号/管段编码/管段名称/材质/工艺流向编号/班组信息/时间戳/创建人/修改人/备注');
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/管段编码/管段名称/管段型号/工序名称/船号/项目号/工艺流向编号/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/产线编码/管件编码/顺序号/材质/班组信息/时间戳/创建人/修改人/备注');
     
 
    // åŠ¨æ€æžšä¸¾é€‰é¡¹ 
@@ -111,34 +108,30 @@
      } 
    } 
 
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    /*******************************************************[高级查询]开始********************************************************************************* */
    // ç»„件挂载时获取枚举数据  
    onMounted(() => {  
      fetchEnumData()  
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      resetQuery();
    })  
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】) 
    const handleQueryForMain = async () => { 
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
      tableRef.value.getList(_curHighQueryData.value) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】) 
    const handleQuery = async (extraParams = {}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
      tableRef.value.getList(filteredData) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
      initQueryForm(queryForm,_searchFormInputAttrs,FILTER_MODE_OPTIONS_STRING_KEY);
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
    } 
     //新版的导出方法 
     const handleExport=()=>{ 
@@ -146,34 +139,9 @@
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³• 
    const closeQuery = (extraParams={}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
      GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
    } 
    //保存查询值
    const commonSaveCurHighQueryData=(filteredData={})=>{
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value;
    }
     //获取高级查询弹出框的查询值
     const commonGetHighQueryForm=(extraParams={})=>{
      // è¿‡æ»¤æŽ‰ undefined çš„值
      let filteredData = Object.assign(
        {},
        ...Object.entries(extraParams).map(([key, value]) =>
          value !== undefined ? { [key]: value } : {}
        )
      )
      //组合模糊查询
      filteredData.searchVal = queryForm.value.searchVal
      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      return filteredData;
    }
    /*******************************************************[高级查询]结束********************************************************************************* */
 
    /** 
     * @returns è¡¨æ ¼ 
@@ -370,7 +338,7 @@
                                placeholder="请选择" 
                                class={styles.formItem} 
                              > 
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption 
                                    key={option.value} 
                                    label={option.label} 
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskDrawer.tsx
@@ -98,6 +98,48 @@
              rules: [{required: true, message: '任务编码不能为空', trigger: 'blur' }], 
                }, 
                { 
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                },
                {
                   label: '管段型号',
                   prop: 'pipeSpecMode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段型号',
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                },
                {
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                },
                {
                   label: '计划状态', 
                   prop: 'workPlanStatus', 
                   el: 'select', 
@@ -116,6 +158,13 @@
                   //disabled: disabled, 
                   placeholder: '请输入叫料状态', 
              rules: [{required: true, message: '叫料状态不能为空', trigger: 'blur' }], 
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                }, 
                { 
                   label: '原料标识', 
@@ -324,27 +373,6 @@
                   placeholder: '请输入产线编码', 
                }, 
                { 
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                },
                {
                   label: '管件编码', 
                   prop: 'pipeFittingCode', 
                   el: 'input', 
@@ -357,20 +385,6 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入顺序号', 
                },
                {
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                }, 
                { 
                   label: '外径(mm)', 
@@ -412,13 +426,6 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入材质', 
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                }, 
                { 
                   label: '计划开始时间', 
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Controllers/WorkTaskQueryDrawer.tsx
@@ -116,6 +116,84 @@
                   } 
                }, 
                { 
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                   highSelectAttrs:{
                     prop: 'pipeSpecCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                   highSelectAttrs:{
                     prop: 'pipeSectionName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段型号',
                   prop: 'pipeSpecMode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段型号',
                   highSelectAttrs:{
                     prop: 'pipeSpecMode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                   highSelectAttrs:{
                     prop: 'processName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                   highSelectAttrs:{
                     prop: 'shipNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                   highSelectAttrs:{
                     prop: 'projectNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '计划状态', 
                   prop: 'workPlanStatus', 
                   el: 'select', 
@@ -143,6 +221,19 @@
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_BOOL 
                   }
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                   highSelectAttrs:{
                     prop: 'processRouteNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   } 
                }, 
                { 
@@ -452,45 +543,6 @@
                   } 
                }, 
                { 
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                   highSelectAttrs:{
                     prop: 'shipNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                   highSelectAttrs:{
                     prop: 'projectNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工序名称',
                   prop: 'processName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工序名称',
                   highSelectAttrs:{
                     prop: 'processName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管件编码', 
                   prop: 'pipeFittingCode', 
                   el: 'input', 
@@ -511,32 +563,6 @@
                   placeholder: '请输入顺序号', 
                   highSelectAttrs:{ 
                     prop: 'preSerialNumber_FilterMode', 
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段编码',
                   prop: 'pipeSpecCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段编码',
                   highSelectAttrs:{
                     prop: 'pipeSpecCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '管段名称',
                   prop: 'pipeSectionName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入管段名称',
                   highSelectAttrs:{
                     prop: 'pipeSectionName_FilterMode',
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_STRING 
@@ -594,19 +620,6 @@
                   placeholder: '请输入材质', 
                   highSelectAttrs:{ 
                     prop: 'material_FilterMode', 
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '工艺流向编号',
                   prop: 'processRouteNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入工艺流向编号',
                   highSelectAttrs:{
                     prop: 'processRouteNumber_FilterMode',
                     el: 'select',  
                     placeholder: '请选择',  
                     options:FILTER_MODE_OPTIONS_STRING 
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/Config.ts
@@ -15,6 +15,36 @@
  width:160, 
}, 
  field: 'pipeSpecCode',
  title: '管段编码',
  width:160,
},
{
  field: 'pipeSectionName',
  title: '管段名称',
  width:160,
},
{
  field: 'pipeSpecMode',
  title: '管段型号',
  width:160,
},
{
  field: 'processName',
  title: '工序名称',
  width:160,
},
{
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160,
},
{
  field: 'workPlanStatusDesc', 
  title: '计划状态', 
  width:160, 
@@ -22,6 +52,11 @@
  field: 'callMaterialStatusDesc', 
  title: '叫料状态', 
  width:160,
},
{
  field: 'processRouteNumber',
  title: '工艺流向编号',
  width:160, 
}, 
@@ -115,21 +150,6 @@
  width:160, 
}, 
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160,
},
{
  field: 'processName',
  title: '工序名称',
  width:160,
},
{
  field: 'pipeFittingCode', 
  title: '管件编码', 
  width:160, 
@@ -137,16 +157,6 @@
  field: 'preSerialNumber', 
  title: '顺序号', 
  width:160,
},
{
  field: 'pipeSpecCode',
  title: '管段编码',
  width:160,
},
{
  field: 'pipeSectionName',
  title: '管段名称',
  width:160, 
}, 
@@ -162,11 +172,6 @@
  field: 'material', 
  title: '材质', 
  width:160,
},
{
  field: 'processRouteNumber',
  title: '工艺流向编号',
  width:160, 
}, 
PipeLineLems/pipelinelems_web/src/widgets/WorkTask/Views/Pages/WorkTask/WorkTask.tsx
@@ -25,8 +25,10 @@
import { injectModel } from '@/libs/Provider/Provider' 
// å¼•入公共选项配置  
import {   
  FILTER_MODE_OPTIONS_STRING
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';  
// å¼•入公共高级查询工具文件
import { commonSaveCurHighQueryData,setValueForCurHighQueryData,commonGetHighQueryForm,initQueryForm,GetFilteredData } from '@/utils/myHighQueryUtils';
 
interface RenderTableType { 
  url?: string 
@@ -69,17 +71,12 @@
 
    //定义高级查询引用 
   const workTaskQueryDrawerRef=ref(null); 
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    })
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([ 
     'Son_TaskCode','TaskCode','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','ProdLineCode','ShipNumber','ProjectNumber','ProcessName','PipeFittingCode','PreSerialNumber','PipeSpecCode','PipeSectionName','Material','ProcessRouteNumber','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark'
     'Son_TaskCode','TaskCode','PipeSpecCode','PipeSectionName','PipeSpecMode','ProcessName','ShipNumber','ProjectNumber','ProcessRouteNumber','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','ProdLineCode','PipeFittingCode','PreSerialNumber','Material','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark'
    ]); 
    const searchFormInputAttrs_Placeholder = ref('请输入子任务编码/任务编码/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/产线编码/船号/项目号/工序名称/管件编码/顺序号/管段编码/管段名称/材质/工艺流向编号/班组信息/时间戳/创建人/修改人/备注');
    const searchFormInputAttrs_Placeholder = ref('请输入子任务编码/任务编码/管段编码/管段名称/管段型号/工序名称/船号/项目号/工艺流向编号/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/产线编码/管件编码/顺序号/材质/班组信息/时间戳/创建人/修改人/备注');
     
 
    // åŠ¨æ€æžšä¸¾é€‰é¡¹ 
@@ -111,34 +108,30 @@
      } 
    } 
 
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    /*******************************************************[高级查询]开始********************************************************************************* */
    // ç»„件挂载时获取枚举数据  
    onMounted(() => {  
      fetchEnumData()  
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      resetQuery();
    })  
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】) 
    const handleQueryForMain = async () => { 
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
      tableRef.value.getList(_curHighQueryData.value) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】) 
    const handleQuery = async (extraParams = {}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
      tableRef.value.getList(filteredData) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
      initQueryForm(queryForm,_searchFormInputAttrs,FILTER_MODE_OPTIONS_STRING_KEY);
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
    } 
     //新版的导出方法 
     const handleExport=()=>{ 
@@ -146,34 +139,9 @@
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³• 
    const closeQuery = (extraParams={}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
      GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
    } 
    //保存查询值
    const commonSaveCurHighQueryData=(filteredData={})=>{
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value;
    }
     //获取高级查询弹出框的查询值
     const commonGetHighQueryForm=(extraParams={})=>{
      // è¿‡æ»¤æŽ‰ undefined çš„值
      let filteredData = Object.assign(
        {},
        ...Object.entries(extraParams).map(([key, value]) =>
          value !== undefined ? { [key]: value } : {}
        )
      )
      //组合模糊查询
      filteredData.searchVal = queryForm.value.searchVal
      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      return filteredData;
    }
    /*******************************************************[高级查询]结束********************************************************************************* */
 
    /** 
     * @returns è¡¨æ ¼ 
@@ -370,7 +338,7 @@
                                placeholder="请选择" 
                                class={styles.formItem} 
                              > 
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption 
                                    key={option.value} 
                                    label={option.label} 
PipeLineLems/pipelinelems_web/vite.lib.config.ts
@@ -69,7 +69,8 @@
const library: any = getWidgetNames.map((name) => {
  return {
    outDir: 'dist',
    //outDir: 'dist',
    outDir: 'D:/Program Files/CMS Editor/host/wwwroot/widgets',//发布到指定目录中
    target: 'ES2022',
    mode: 'development',
    rollupOptions: {
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs
@@ -55,6 +55,66 @@
        public SearchFilterModeEnum TaskCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSectionName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecMode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// å·¥åºåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// èˆ¹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ShipNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProjectNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum?  WorkPlanStatus { get; set; }
@@ -73,6 +133,16 @@
        /// å«æ–™çŠ¶æ€-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum CallMaterialStatus_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessRouteNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -255,36 +325,6 @@
        public SearchFilterModeEnum ProdLineCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// èˆ¹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ShipNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProjectNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// å·¥åºåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string PipeFittingCode { get; set; }
@@ -303,26 +343,6 @@
        /// é¡ºåºå·-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum PreSerialNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSectionName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å¤–径(mm)
@@ -353,16 +373,6 @@
        /// æè´¨-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum Material_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessRouteNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan
{
    /// <summary>
    /// ä¸‹å‘法兰冲码 è¾“入参数模型
    /// </summary>
    [Serializable]
    public class SendFlangeCodeInput
    {
        /// <summary>
        /// å­ä»»åŠ¡ç¼–å·
        /// </summary>
        public string Son_TaskCode { get; set; }
        /// <summary>
        /// ä»»åŠ¡ç¼–å·
        /// </summary>
        public string TaskCode { get; set; }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs
@@ -15,6 +15,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string? PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -23,6 +53,11 @@
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -115,21 +150,6 @@
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string? PipeFittingCode { get; set; }
@@ -138,16 +158,6 @@
        /// é¡ºåºå·
        /// </summary>
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -163,11 +173,6 @@
        /// æè´¨
        /// </summary>
        public string? Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs
@@ -18,6 +18,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string? PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -47,6 +77,11 @@
                return GetEnumDescriptionUtil.GetEnumDescription(CallMaterialStatus); 
            } 
        } 
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
@@ -138,21 +173,6 @@
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string? PipeFittingCode { get; set; }
@@ -161,16 +181,6 @@
        /// é¡ºåºå·
        /// </summary>
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -186,11 +196,6 @@
        /// æè´¨
        /// </summary>
        public string? Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs
@@ -17,6 +17,42 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        [ExcelColumn(Name = "管段编码", Width = 25)]
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        [ExcelColumn(Name = "管段名称", Width = 25)]
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        [ExcelColumn(Name = "管段型号", Width = 25)]
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        [ExcelColumn(Name = "工序名称", Width = 25)]
        public string ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        [ExcelColumn(Name = "船号", Width = 25)]
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        [ExcelColumn(Name = "项目号", Width = 25)]
        public string ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        [ExcelColumn(Name = "计划状态", Width = 25)]
@@ -27,6 +63,12 @@
        /// </summary>
        [ExcelColumn(Name = "叫料状态", Width = 25)]
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        [ExcelColumn(Name = "工艺流向编号", Width = 25)]
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -137,24 +179,6 @@
        public string ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        [ExcelColumn(Name = "船号", Width = 25)]
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        [ExcelColumn(Name = "项目号", Width = 25)]
        public string ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        [ExcelColumn(Name = "工序名称", Width = 25)]
        public string ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        [ExcelColumn(Name = "管件编码", Width = 25)]
@@ -165,18 +189,6 @@
        /// </summary>
        [ExcelColumn(Name = "顺序号", Width = 25)]
        public string PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        [ExcelColumn(Name = "管段编码", Width = 25)]
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        [ExcelColumn(Name = "管段名称", Width = 25)]
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -195,12 +207,6 @@
        /// </summary>
        [ExcelColumn(Name = "材质", Width = 25)]
        public string Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        [ExcelColumn(Name = "工艺流向编号", Width = 25)]
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs
@@ -84,6 +84,11 @@
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string? PipeSpecMode { get; set; }
        /// <summary>
        /// å¤–径
        /// </summary>
        public string OuterDiameter { get; set; }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/GetWorkTaskInput.cs
@@ -65,6 +65,66 @@
        public SearchFilterModeEnum TaskCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSectionName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecMode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// å·¥åºåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// èˆ¹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ShipNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProjectNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum?  WorkPlanStatus { get; set; }
@@ -83,6 +143,16 @@
        /// å«æ–™çŠ¶æ€-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum CallMaterialStatus_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessRouteNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -265,36 +335,6 @@
        public SearchFilterModeEnum ProdLineCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// èˆ¹å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ShipNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProjectNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// å·¥åºåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string PipeFittingCode { get; set; }
@@ -313,26 +353,6 @@
        /// é¡ºåºå·-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum PreSerialNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSpecCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum PipeSectionName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å¤–径(mm)
@@ -363,16 +383,6 @@
        /// æè´¨-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum Material_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ProcessRouteNumber_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskCreateOrUpdateDtoBase.cs
@@ -20,6 +20,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string? PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -28,6 +58,11 @@
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -120,21 +155,6 @@
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string? PipeFittingCode { get; set; }
@@ -143,16 +163,6 @@
        /// é¡ºåºå·
        /// </summary>
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -168,11 +178,6 @@
        /// æè´¨
        /// </summary>
        public string? Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskDto.cs
@@ -23,6 +23,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string? PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -52,6 +82,11 @@
                return GetEnumDescriptionUtil.GetEnumDescription(CallMaterialStatus); 
            } 
        } 
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
        /// </summary>
@@ -143,21 +178,6 @@
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string? ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        public string? PipeFittingCode { get; set; }
@@ -166,16 +186,6 @@
        /// é¡ºåºå·
        /// </summary>
        public string? PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string? PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string? PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -191,11 +201,6 @@
        /// æè´¨
        /// </summary>
        public string? Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string? ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkTask/WorkTaskExportModel.cs
@@ -23,6 +23,42 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        [ExcelColumn(Name = "管段编码", Width = 25)]
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        [ExcelColumn(Name = "管段名称", Width = 25)]
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        [ExcelColumn(Name = "管段型号", Width = 25)]
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        [ExcelColumn(Name = "工序名称", Width = 25)]
        public string ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        [ExcelColumn(Name = "船号", Width = 25)]
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        [ExcelColumn(Name = "项目号", Width = 25)]
        public string ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        [ExcelColumn(Name = "计划状态", Width = 25)]
@@ -33,6 +69,12 @@
        /// </summary>
        [ExcelColumn(Name = "叫料状态", Width = 25)]
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        [ExcelColumn(Name = "工艺流向编号", Width = 25)]
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// åŽŸæ–™æ ‡è¯†
@@ -143,24 +185,6 @@
        public string ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        [ExcelColumn(Name = "船号", Width = 25)]
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        [ExcelColumn(Name = "项目号", Width = 25)]
        public string ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        [ExcelColumn(Name = "工序名称", Width = 25)]
        public string ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
        /// </summary>
        [ExcelColumn(Name = "管件编码", Width = 25)]
@@ -171,18 +195,6 @@
        /// </summary>
        [ExcelColumn(Name = "顺序号", Width = 25)]
        public string PreSerialNumber { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        [ExcelColumn(Name = "管段编码", Width = 25)]
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        [ExcelColumn(Name = "管段名称", Width = 25)]
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -201,12 +213,6 @@
        /// </summary>
        [ExcelColumn(Name = "材质", Width = 25)]
        public string Material { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        [ExcelColumn(Name = "工艺流向编号", Width = 25)]
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkTaskAppService.cs
@@ -1,8 +1,8 @@
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask; 
using Volo.Abp.Application.Services;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using CmsQueryExtensions.Entitys; 
using System.Linq.Expressions; 
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using Volo.Abp.Application.Services;
 
namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; 
 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -13,13 +13,16 @@
using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder;
using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using CMS.Plugin.ProcessManagement.Abstractions;
using CMS.Plugin.ProductManagement.Abstractions;
using CMS.Plugin.TraceManagement.Abstractions;
using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
using CMS.Unit.RuntimeValue.Models;
using CmsQueryExtensions;
using CmsQueryExtensions.Entitys;
using CmsQueryExtensions.Extension;
using Humanizer;
using KissUtil.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
@@ -34,6 +37,8 @@
/// </summary> 
public class SharedService : CMSPluginAppService
{
    /// <summary>
    /// åˆ†æ‹£åŠŸèƒ½
@@ -563,6 +568,7 @@
        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
        var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
@@ -633,6 +639,15 @@
        }
        await workPlanRepository.UpdateManyAsync(workPlanList);
        //更新作业任务表
        var workTaskList = await workTaskRepository.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
        foreach (var item in workTaskList)
        {
            item.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.叫料完成;
            item.LastModifierName = "SuperAdmin";
        }
        await workTaskRepository.UpdateManyAsync(workTaskList);
        //新增叫料记录表
        var callMaterialOrderRecord = new CallMaterialOrderRecord()
        {
@@ -691,6 +706,7 @@
        VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
        var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
        var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
@@ -701,6 +717,11 @@
        if (workPlan == null)
        {
            throw new UserFriendlyException($"找不到作业计划");
        }
        var workTask = await workTaskRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode && x.ProcessName == workPlan.ProcessName);
        if (workTask == null)
        {
            throw new UserFriendlyException($"找不到作业任务");
        }
        if (workPlan.ProcessName == "装配工序")
        {
@@ -740,6 +761,7 @@
            //    workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            //}
            workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
            workTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
            await workPlanRepository.UpdateAsync(workPlan);
@@ -796,7 +818,7 @@
    /// <summary>
    /// è£…配工序完工
    /// è£…配/焊接工序完工
    /// </summary>
    /// <param name="_serviceProvider"></param>
    /// <param name="input"></param>
@@ -816,16 +838,35 @@
        }
        #region äº‹åŠ¡
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
        try
        {
            #region æ•°æ®å¤„理
        VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
        var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>();
        var _workStationManager = _serviceProvider.GetRequiredService<IWorkStationManager>();
        var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>();
        var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>();
        var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
        var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
        string processName = "";
            var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
            if (firstWorkTask == null)
            {
                throw new UserFriendlyException($"找不到作业计划");
            }
        //物料参数列表
        var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
        if (firstWorkPlan == null)
@@ -873,17 +914,8 @@
            });
        }
        #region äº‹åŠ¡
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
        try
        {
            #region æ•°æ®å¤„理
            firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            await workTaskRepository.UpdateAsync(firstWorkTask);
            firstWorkPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            await workPlanRepository.UpdateAsync(firstWorkPlan);
@@ -967,21 +999,20 @@
                string _value = "";
                //采集参数
                ReadWriteResult<IVariableValue?>? _getValue = null;
                if (item.Name == $"{processName}压力")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                    _value = _getValue.Content.Value.SafeString().ToString();
                     _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                }
                if (item.Name == $"{processName}位置")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                    _value = _getValue.Content.Value.SafeString().ToString();
                     _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                }
                if (item.Name == $"{processName}速度")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                    _value = _getValue.Content.Value.SafeString().ToString();
                     _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                }
                _value = _getValue?.Content?.Value?.SafeString().ToString();
                if (item.Name == $"{processName}间隙")
                {
@@ -1004,21 +1035,436 @@
                string _value = "";
                //采集参数
                ReadWriteResult<IVariableValue?>? _getValue = null;
                if (item.Name == $"{processName}压力")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                    _value = _getValue.Content.Value.SafeString().ToString();
                }
                     _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                if (item.Name == $"{processName}位置")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                    _value = _getValue.Content.Value.SafeString().ToString();
                     _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                }
                if (item.Name == $"{processName}速度")
                {
                    var _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                    _value = _getValue.Content.Value.SafeString().ToString();
                     _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                }
                _value = _getValue?.Content?.Value?.SafeString().ToString();
                if (item.Name == $"{processName}间隙")
                {
                    _value = "15mm";
                }
                if (item.Name == $"{processName}人")
                {
                    _value = myCurrentUser.UserAccount;
                }
                //item.Key
                TraceParamModel traceParamModel = new TraceParamModel()
                {
                    Key = item.Key,
                    Value = _value
                };
                traceModel.Params.Add(traceParamModel);
            };
            traceModel.MaterialParams = _MaterialParams;
            await traceProvider.CreateTraceAsync(traceModel);
            #endregion
            await uow.CompleteAsync();
            var response = new MesOrderResponse
            {
                Code = "200",
                Data = "",
                Message = "处理成功",
                Time = DateTime.UtcNow
            };
            return response;
        }
        catch (Exception)
        {
            await uow.RollbackAsync();
            throw;
        }
        finally
        {
        }
        #endregion
    }
    #region æ³•兰冲码
    /// <summary>
    ///下发法兰冲码 å¼€å·¥
    /// </summary>
    /// <param name="input"></param>
    /// <param name="_serviceProvider"></param>
    /// <param name="myCurrentUser"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task<MesOrderResponse> SendFlangeCode_StartProduction(SendFlangeCodeInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser)
    {
        if (string.IsNullOrEmpty(input.TaskCode.ToString()))
        {
            throw new UserFriendlyException("任务编码不能为空");
        }
        string processName = "法兰冲码";
        VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
        var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
        var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
        var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
        // æŸ¥æ‰¾æ•°æ®
        var workTask = await workTaskRepository.GetSingleByFilterAsync(x => x.Son_TaskCode == input.Son_TaskCode);
        if (workTask == null)
        {
            throw new UserFriendlyException($"没有找到子任务编号{input.Son_TaskCode}的任务数据");
        }
        if (workTask.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.未生产)
        {
            throw new UserFriendlyException($"子任务编号{input.Son_TaskCode}的任务状态不是'{Domain.Shared.Enums.WorkPlanStatusEnum.未生产.ToString()}'");
        }
        var workPlan = await workPlanRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode);
        if (workPlan == null)
        {
            throw new UserFriendlyException($"找不到作业计划");
        }
        // éªŒè¯çŠ¶æ€
        if (workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.暂停中 && workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.未生产)
        {
            //暂时注释
            //throw new UserFriendlyException($"任务编码 '{input.TaskCode}' çš„录状态为 '{workPlan.WorkPlanStatus}',不允许开工");
        }
        var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == workPlan.DataIdentifier);
        #region äº‹åŠ¡
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
        try
        {
            #region æ•°æ®å¤„理
            //1、更新作业计划表为 ç”Ÿäº§ä¸­
            //2、给PLC发工艺参数指令,并写入 plc中 äº§å“id
            //if (workPlan.ProcessName == "装配工序")
            //{
            //    workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
            //}
            //else if (workPlan.ProcessName == "焊接工序")
            //{
            //    workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            //}
            workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
            workTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
            await workPlanRepository.UpdateAsync(workPlan);
            await workTaskRepository.UpdateAsync(workTask);
            Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?>
                        {
                            { $"{processName}_ProductID", workPlan.PipeSpecCode },
                            { $"{processName}管段编码", workPlan.PipeSpecCode },
                            { $"{processName}管段名称", workPlan.PipeSectionName },
                            { $"{processName}原料管批次", callMaterialOrder.MaterialBatch },
                            { $"{processName}原料管型号", callMaterialOrder.MaterialMode },
                            { $"{processName}原料管标识", callMaterialOrder.DataIdentifier },
                            { $"{processName}项目号", workPlan.ProjectNumber },
                            { $"{processName}船号", workPlan.ShipNumber },
                            //采集数据模拟写入
                            { $"{processName}压力", "10.0 MPa" },
                            { $"{processName}速度", "18mm/s"},
                            { $"{processName}内容", workTask.PipeAllowableStress},
                            { $"{processName}人", myCurrentUser.UserAccount},
                            { $"{processName}间隙","15mm"},
                            { $"{processName}位置", "10,23,24"},
                        };
            _variableService.WriteValueAsync(keyValuePairs);
            #endregion
            await uow.CompleteAsync();
            // è¿”回结果
            var response = new MesOrderResponse
            {
                Code = "200",
                Message = "处理成功",
                Time = DateTime.UtcNow
            };
            return response;
        }
        catch (Exception)
        {
            await uow.RollbackAsync();
            throw;
        }
        finally
        {
        }
        #endregion
    }
    /// <summary>
    /// ä¸‹å‘法兰冲码 å®Œå·¥
    /// </summary>
    /// <param name="_serviceProvider"></param>
    /// <param name="input"></param>
    /// <param name="myCurrentUser"></param>
    /// <returns></returns>
    public async Task<MesOrderResponse> SendFlangeCode_CompleteAssemblyProcess(IServiceProvider _serviceProvider, CompleteAssemblyProcessInput input, MyCurrentUser myCurrentUser)
    {
        //1、记录分拣记录表
        //2、更新作业计划表的状态 =已分拣
        //3、写入 åˆ†æ‹£å˜é‡
        //4、写入追溯报表
        //5、物料组盘
        if (string.IsNullOrEmpty(input.PipeSpecCode))
        {
            throw new UserFriendlyException($"管段编码不能为空");
        }
        #region äº‹åŠ¡
        using var scope = _serviceProvider.CreateScope();
        var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
        using var uow = unitOfWorkManager.Begin(requiresNew: true);
        try
        {
            #region æ•°æ®å¤„理
            VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
            var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>();
            var _workStationManager = _serviceProvider.GetRequiredService<IWorkStationManager>();
            var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>();
            var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>();
            var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
            var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
            var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
            string processName = "法兰冲码";
            var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == (input.ProcessName));
            if (firstWorkTask == null)
            {
                throw new UserFriendlyException($"找不到作业计划");
            }
            //物料参数列表
            var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == "装配工序");
            if (firstWorkPlan == null)
            {
                throw new UserFriendlyException($"找不到作业计划");
            }
            await CompleteHandleOutStoreFinish(_serviceProvider, processName, true);
            //根据工序名获取工序对象
            var workSection = await _workSectionManager.GetByNameAsync($"{processName}工序");
            var workStation = await _workStationManager.GetByNameAsync($"{processName}工位");
            //写入追溯报表
            var finishTime = DateTime.Now;
            TraceModel traceModel = new TraceModel()
            {
                SerialNumber = input.PipeSpecCode,
                WorkSectionId = workSection.Id,
                WorkSectionName = workSection.Name,
                WorkStationName = workStation.Name,
                FinishTime = finishTime,
                IsQualified = true,
                UnqualifiedReason = "",
                ProductModel = "",
                ProductName = "",
            };
            traceModel.Params = new List<TraceParamModel>();
            foreach (var item in workSection.ProcessParameters)
            {
                var value = "ssss";
                traceModel.Params.Add(new TraceParamModel()
                {
                    Key = item.Key,
                    Value = value.SafeString()
                });
            }
            firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            await workTaskRepository.UpdateAsync(firstWorkTask);
            //这个地方不改数据
            //firstWorkPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
            //await workPlanRepository.UpdateAsync(firstWorkPlan);
            var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier);
            var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("原料管标识");
            var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("原料管型号");
            var rawPipe_Batch = await materialProvider.FindByNameAsync("原料管批次");
            var rawPipe_ProjectNumber = await materialProvider.FindByNameAsync("项目号");
            var rawPipe_ShipNumber = await materialProvider.FindByNameAsync("船号");
            List<TraceMaterialModel> _MaterialParams = new List<TraceMaterialModel>();
            foreach (var item in workSection.MaterialParameters)
            {
                if (item.Name == "原料管型号")
                {
                    _MaterialParams.Add(new TraceMaterialModel()
                    {
                        Key = item.Key,
                        Quantity = 1,
                        MaterialId = rawPipe_MaterialMode.MaterialId,
                        MaterialDetailId = rawPipe_MaterialMode.MaterialDetails.First().Id,
                        Value = firstWorkPlan.MaterialMode
                    });
                }
                if (item.Name == "原料管标识")
                {
                    _MaterialParams.Add(new TraceMaterialModel()
                    {
                        Key = item.Key,
                        Quantity = 1,
                        MaterialId = rawPipe_DataIdentifier.MaterialId,
                        MaterialDetailId = rawPipe_DataIdentifier.MaterialDetails.First().Id,
                        Value = firstWorkPlan.DataIdentifier,
                    });
                }
                if (item.Name == "原料管批次")
                {
                    _MaterialParams.Add(new TraceMaterialModel()
                    {
                        Key = item.Key,
                        Quantity = 1,
                        MaterialId = rawPipe_Batch.MaterialId,
                        MaterialDetailId = rawPipe_Batch.MaterialDetails.First().Id,
                        Value = callMaterialOrder.MaterialBatch,//批次暂时写死
                    });
                }
                if (item.Name == "项目号")
                {
                    _MaterialParams.Add(new TraceMaterialModel()
                    {
                        Key = item.Key,
                        Quantity = 1,
                        MaterialId = rawPipe_ProjectNumber.MaterialId,
                        MaterialDetailId = rawPipe_ProjectNumber.MaterialDetails.First().Id,
                        Value = firstWorkPlan.ProjectNumber,
                    });
                }
                if (item.Name == "船号")
                {
                    _MaterialParams.Add(new TraceMaterialModel()
                    {
                        Key = item.Key,
                        Quantity = 1,
                        MaterialId = rawPipe_ShipNumber.MaterialId,
                        MaterialDetailId = rawPipe_ShipNumber.MaterialDetails.First().Id,
                        Value = firstWorkPlan.ShipNumber,
                    });
                }
            };
            //配置过程参数(采集参数、配方参数)
            traceModel.Params = new List<TraceParamModel>();
            foreach (var item in workSection.ProcessParameters)
            {
                string _value = "";
                //采集参数
                ReadWriteResult<IVariableValue?>? _getValue = null;
                if (item.Name == $"{processName}压力")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                }
                if (item.Name == $"{processName}位置")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                }
                if (item.Name == $"{processName}速度")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                }
                _value = _getValue?.Content?.Value?.SafeString().ToString();
                if (item.Name == $"{processName}间隙")
                {
                    _value = "15mm";
                }
                if (item.Name == $"{processName}人")
                {
                    _value = myCurrentUser.UserAccount;
                }
                //item.Key
                TraceParamModel traceParamModel = new TraceParamModel()
                {
                    Key = item.Key,
                    Value = _value
                };
                traceModel.Params.Add(traceParamModel);
            };
            foreach (var item in workSection.FormulaParameters)
            {
                string _value = "";
                //采集参数
                ReadWriteResult<IVariableValue?>? _getValue = null;
                if (item.Name == $"{processName}压力")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}压力");
                }
                if (item.Name == $"{processName}位置")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}位置");
                }
                if (item.Name == $"{processName}速度")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}速度");
                }
                if (item.Name == $"{processName}内容")
                {
                    _getValue = await _variableService.ReadValueAsync($"{processName}内容");
                }
                _value = _getValue?.Content?.Value?.SafeString().ToString();
                if (item.Name == $"{processName}间隙")
                {
@@ -1041,6 +1487,12 @@
            await traceProvider.CreateTraceAsync(traceModel);
            #endregion
            await uow.CompleteAsync();
            var response = new MesOrderResponse
            {
                Code = "200",
@@ -1049,10 +1501,6 @@
                Time = DateTime.UtcNow
            };
            return response;
            #endregion
            await uow.CompleteAsync();
        }
        catch (Exception)
        {
@@ -1070,6 +1518,8 @@
    }
    #endregion
    /// <summary>
    /// å…¬å…±å¤„理 å“åº”出站完成信号
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
@@ -151,42 +151,10 @@
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        updateObj.TaskCode = input.TaskCode;
        updateObj.WorkPlanStatus = input.WorkPlanStatus;
        updateObj.CallMaterialStatus = input.CallMaterialStatus;
        updateObj.DataIdentifier = input.DataIdentifier;
        updateObj.MaterialMode = input.MaterialMode;
        updateObj.Length = input.Length;
        updateObj.MarkingContent = input.MarkingContent;
        updateObj.MarkingPosition = input.MarkingPosition;
        updateObj.CuttingPosition = input.CuttingPosition;
        updateObj.Quantity = input.Quantity;
        updateObj.FlangeThickness = input.FlangeThickness;
        updateObj.FlangeInnerDiameter = input.FlangeInnerDiameter;
        updateObj.WeldingHeatInput = input.WeldingHeatInput;
        updateObj.PipeAllowableStress = input.PipeAllowableStress;
        updateObj.PipeDiameter = input.PipeDiameter;
        updateObj.PipeWallThickness = input.PipeWallThickness;
        updateObj.FactoryCode = input.FactoryCode;
        updateObj.ProductCode = input.ProductCode;
        updateObj.WorkstationCode = input.WorkstationCode;
        updateObj.EquipmentCode = input.EquipmentCode;
        // æ‰¹é‡èµ‹å€¼æ‰€æœ‰å¯æ˜ å°„字段(通过匿名对象)
        updateObj = ObjectMapper.Map(input, updateObj); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
        updateObj.ProcessName = input.ProcessName;
        updateObj.PipeFittingCode = input.PipeFittingCode;
        updateObj.PreSerialNumber = input.PreSerialNumber;
        updateObj.PipeSpecCode = input.PipeSpecCode;
        updateObj.PipeSectionName = input.PipeSectionName;
        updateObj.OuterDiameter = input.OuterDiameter;
        updateObj.Thickness = input.Thickness;
        updateObj.Material = input.Material;
        updateObj.ProcessRouteNumber = input.ProcessRouteNumber;
        updateObj.PlannedStartTime = input.PlannedStartTime;
        updateObj.PlannedEndTime = input.PlannedEndTime;
        updateObj.TeamInfo = input.TeamInfo;
        updateObj.Timestamp = input.Timestamp;
        updateObj.Remark = input.Remark;
        updateObj.LastModifierName = input.LastModifierName;//修改人
        await _workPlanRepository.UpdateAsync(updateObj);
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkTaskAppService.cs
@@ -1,16 +1,15 @@
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using CmsQueryExtensions;
using CmsQueryExtensions.Entitys;
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;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
@@ -145,45 +144,8 @@
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        updateObj.Son_TaskCode = input.Son_TaskCode;
        updateObj.TaskCode = input.TaskCode;
        updateObj.WorkPlanStatus = input.WorkPlanStatus;
        updateObj.CallMaterialStatus = input.CallMaterialStatus;
        updateObj.DataIdentifier = input.DataIdentifier;
        updateObj.MaterialMode = input.MaterialMode;
        updateObj.Length = input.Length;
        updateObj.MarkingContent = input.MarkingContent;
        updateObj.MarkingPosition = input.MarkingPosition;
        updateObj.CuttingPosition = input.CuttingPosition;
        updateObj.Quantity = input.Quantity;
        updateObj.FlangeThickness = input.FlangeThickness;
        updateObj.FlangeInnerDiameter = input.FlangeInnerDiameter;
        updateObj.WeldingHeatInput = input.WeldingHeatInput;
        updateObj.PipeAllowableStress = input.PipeAllowableStress;
        updateObj.PipeDiameter = input.PipeDiameter;
        updateObj.PipeWallThickness = input.PipeWallThickness;
        updateObj.FactoryCode = input.FactoryCode;
        updateObj.ProductCode = input.ProductCode;
        updateObj.WorkstationCode = input.WorkstationCode;
        updateObj.EquipmentCode = input.EquipmentCode;
        updateObj.ProdLineCode = input.ProdLineCode;
        updateObj.ShipNumber = input.ShipNumber;
        updateObj.ProjectNumber = input.ProjectNumber;
        updateObj.ProcessName = input.ProcessName;
        updateObj.PipeFittingCode = input.PipeFittingCode;
        updateObj.PreSerialNumber = input.PreSerialNumber;
        updateObj.PipeSpecCode = input.PipeSpecCode;
        updateObj.PipeSectionName = input.PipeSectionName;
        updateObj.OuterDiameter = input.OuterDiameter;
        updateObj.Thickness = input.Thickness;
        updateObj.Material = input.Material;
        updateObj.ProcessRouteNumber = input.ProcessRouteNumber;
        updateObj.PlannedStartTime = input.PlannedStartTime;
        updateObj.PlannedEndTime = input.PlannedEndTime;
        updateObj.TeamInfo = input.TeamInfo;
        updateObj.Timestamp = input.Timestamp;
        updateObj.Remark = input.Remark;
        // æ‰¹é‡èµ‹å€¼æ‰€æœ‰å¯æ˜ å°„字段(通过匿名对象)
        updateObj = ObjectMapper.Map(input, updateObj); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
        updateObj.LastModifierName = input.LastModifierName;//修改人 
@@ -285,34 +247,34 @@
    /// <returns></returns> 
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        //var list = await _workTaskRepository.GetListAsync(null, nameof(WorkTask.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));
        //        }
        var list = await _workTaskRepository.GetListAsync(null, nameof(WorkTask.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);
        //    }
        //}
                entity.AdjustSort(sort);
            }
        }
        //await _workTaskRepository.UpdateManyAsync(list);
        await _workTaskRepository.UpdateManyAsync(list);
    }
    /// <summary> 
@@ -326,7 +288,7 @@
        Check.NotNull(input, nameof(input));
        var workTaskCreateDtos = new List<(int RowIndex, WorkTaskCreateDto Item)>();
        var workTaskUpdateDtos = new List<(int RowIndex, Guid Id, WorkTaskUpdateDto Item)>();
        var workTaskUpdateDtos = new List<(int RowIndex, Guid Id, WorkTask Item)>();
        var importItems = input.WorkTasks;
        if (importItems != null && importItems.Any())
@@ -360,96 +322,13 @@
                var oldWorkTask = await _workTaskRepository.FindByNameAsync(impItem.Son_TaskCode);
                if (oldWorkTask != null)
                {
                    var workTaskUpdateDto = new WorkTaskUpdateDto
                    {
                        Son_TaskCode = impItem.Son_TaskCode,
                        TaskCode = impItem.TaskCode,
                        WorkPlanStatus = impItem.WorkPlanStatus,
                        CallMaterialStatus = impItem.CallMaterialStatus,
                        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,
                        ProdLineCode = impItem.ProdLineCode,
                        ShipNumber = impItem.ShipNumber,
                        ProjectNumber = impItem.ProjectNumber,
                        ProcessName = impItem.ProcessName,
                        PipeFittingCode = impItem.PipeFittingCode,
                        PreSerialNumber = impItem.PreSerialNumber,
                        PipeSpecCode = impItem.PipeSpecCode,
                        PipeSectionName = impItem.PipeSectionName,
                        OuterDiameter = impItem.OuterDiameter,
                        Thickness = impItem.Thickness,
                        Material = impItem.Material,
                        ProcessRouteNumber = impItem.ProcessRouteNumber,
                        PlannedStartTime = impItem.PlannedStartTime,
                        PlannedEndTime = impItem.PlannedEndTime,
                        TeamInfo = impItem.TeamInfo,
                        Timestamp = impItem.Timestamp,
                        Remark = impItem.Remark,
                    };
                    workTaskUpdateDtos.Add((impItem.RowIndex, oldWorkTask.Id, workTaskUpdateDto));
                    oldWorkTask = ObjectMapper.Map(impItem, oldWorkTask); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    workTaskUpdateDtos.Add((impItem.RowIndex, oldWorkTask.Id, oldWorkTask));
                }
                else
                {
                    var workTaskCreateDto = new WorkTaskCreateDto
                    {
                        Son_TaskCode = impItem.Son_TaskCode,
                        TaskCode = impItem.TaskCode,
                        WorkPlanStatus = impItem.WorkPlanStatus,
                        CallMaterialStatus = impItem.CallMaterialStatus,
                        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,
                        ProdLineCode = impItem.ProdLineCode,
                        ShipNumber = impItem.ShipNumber,
                        ProjectNumber = impItem.ProjectNumber,
                        ProcessName = impItem.ProcessName,
                        PipeFittingCode = impItem.PipeFittingCode,
                        PreSerialNumber = impItem.PreSerialNumber,
                        PipeSpecCode = impItem.PipeSpecCode,
                        PipeSectionName = impItem.PipeSectionName,
                        OuterDiameter = impItem.OuterDiameter,
                        Thickness = impItem.Thickness,
                        Material = impItem.Material,
                        ProcessRouteNumber = impItem.ProcessRouteNumber,
                        PlannedStartTime = impItem.PlannedStartTime,
                        PlannedEndTime = impItem.PlannedEndTime,
                        TeamInfo = impItem.TeamInfo,
                        Timestamp = impItem.Timestamp,
                        Remark = impItem.Remark,
                    };
                    var workTaskCreateDto = new WorkTaskCreateDto { };
                    workTaskCreateDto = ObjectMapper.Map(impItem, workTaskCreateDto); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    workTaskCreateDtos.Add((impItem.RowIndex, workTaskCreateDto));
                }
            }
@@ -476,7 +355,7 @@
            try
            {
                workTaskDto.Item.LastModifierName = myCurrentUser.UserAccount;//修改人 
                await UpdateAsync(workTaskDto.Id, workTaskDto.Item);
                await _workTaskRepository.UpdateAsync(workTaskDto.Item);
            }
            catch (Exception e)
            {
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkPlanAutoMapperProfile.cs
@@ -1,7 +1,11 @@
using AutoMapper; 
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; 
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan; 
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using Volo.Abp.ObjectExtending; 
using static CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan.WorkPlansImportModel;
using static CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask.WorkTasksImportModel;
 
namespace CMS.Plugin.PipeLineLems.Application.MapperProfiles; 
 
@@ -21,6 +25,16 @@
         * 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<WorkPlanUpdateDto, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWorkPlanInput, WorkPlan>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
        CreateMap<WorkPlanImportModel, WorkPlanCreateDto>(MemberList.None);
        CreateMap<WorkPlanImportModel, WorkPlanUpdateDto>(MemberList.None);
        CreateMap<WorkPlanCreateDto, WorkTaskCreateDto>(MemberList.None);
        CreateMap<WorkPlanImportModel, WorkPlanCreateDto>(MemberList.None);
        CreateMap<WorkPlanImportModel, WorkPlanUpdateDto>(MemberList.None);
        CreateMap<WorkPlanImportModel, WorkPlan>(MemberList.None);
    } 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/MapperProfiles/WorkTaskAutoMapperProfile.cs
@@ -1,8 +1,8 @@
using AutoMapper;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
using Volo.Abp.ObjectExtending;
using static CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask.WorkTasksImportModel;
namespace CMS.Plugin.PipeLineLems.Application.MapperProfiles;
@@ -23,7 +23,10 @@
        CreateMap<WorkTask, WorkTaskDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskCreateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWorkTaskInput, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskUpdateDto, WorkTask>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkPlanCreateDto, WorkTaskCreateDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WorkTaskImportModel, WorkTaskCreateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTaskUpdateDto>(MemberList.None);
        CreateMap<WorkTaskImportModel, WorkTask>(MemberList.None);
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/WorkPlan.cs
@@ -17,6 +17,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -25,6 +55,11 @@
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        #region åŽŸæ–™ç®¡ä¿¡æ¯
@@ -149,20 +184,9 @@
        /// </summary>
        public string ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
@@ -176,15 +200,7 @@
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -217,10 +233,7 @@
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkTask/WorkTask.cs
@@ -24,6 +24,36 @@
        public string TaskCode { get; set; }
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// ç®¡æ®µåž‹å·
        /// </summary>
        public string PipeSpecMode { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’状态
        /// </summary>
        public WorkPlanStatusEnum WorkPlanStatus { get; set; }
@@ -32,6 +62,11 @@
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        #region åŽŸæ–™ç®¡ä¿¡æ¯
@@ -156,20 +191,9 @@
        /// </summary>
        public string ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
        /// </summary>
        public string ProcessName { get; set; }
        /// <summary>
        /// ç®¡ä»¶ç¼–码
@@ -183,15 +207,7 @@
        /// <summary>
        /// ç®¡æ®µç¼–码
        /// </summary>
        public string PipeSpecCode { get; set; }
        /// <summary>
        /// ç®¡æ®µåç§°
        /// </summary>
        public string PipeSectionName { get; set; }
        /// <summary>
        /// å¤–径(mm)
@@ -224,10 +240,7 @@
        /// <summary>
        /// å·¥è‰ºæµå‘编号
        /// </summary>
        public string ProcessRouteNumber { get; set; }
        /// <summary>
        /// è®¡åˆ’开始时间
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkPlan.cs
@@ -73,6 +73,7 @@
            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.PipeSpecMode).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("材质");
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WorkTask.cs
@@ -75,6 +75,7 @@
            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.PipeSpecMode).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("材质");
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250521014306_Update2.Designer.cs
ÎļþÃû´Ó PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250520032108_Update2.Designer.cs ÐÞ¸Ä
@@ -12,7 +12,7 @@
namespace CMS.Plugin.PipeLineLems.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250520032108_Update2")]
    [Migration("20250521014306_Update2")]
    partial class Update2
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -562,6 +562,11 @@
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<string>("PipeSpecMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段型号");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
@@ -855,6 +860,11 @@
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<string>("PipeSpecMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段型号");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250521014306_Update2.cs
ÎļþÃû´Ó PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/20250520032108_Update2.cs ÐÞ¸Ä
@@ -152,8 +152,22 @@
                    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"),
                    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"),
                    PipeSpecMode = 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"),
                    ShipNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "船号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProjectNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "项目号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    WorkPlanStatus = table.Column<int>(type: "int", nullable: false, comment: "计划状态"),
                    CallMaterialStatus = table.Column<int>(type: "int", nullable: false, comment: "叫料状态"),
                    ProcessRouteNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, 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: "原料型号")
@@ -182,25 +196,13 @@
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProdLineCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "产线编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ShipNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "船号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProjectNumber = 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"),
                    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: "计划完成时间"),
@@ -254,8 +256,22 @@
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    TaskCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false, 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"),
                    PipeSpecMode = 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"),
                    ShipNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "船号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProjectNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "项目号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    WorkPlanStatus = table.Column<int>(type: "int", nullable: false, comment: "计划状态"),
                    CallMaterialStatus = table.Column<int>(type: "int", nullable: false, comment: "叫料状态"),
                    ProcessRouteNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, 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: "原料型号")
@@ -284,25 +300,13 @@
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProdLineCode = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "产线编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ShipNumber = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true, comment: "船号")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ProjectNumber = 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"),
                    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: "计划完成时间"),
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
@@ -560,6 +560,11 @@
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<string>("PipeSpecMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段型号");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
@@ -853,6 +858,11 @@
                        .HasColumnType("varchar(256)")
                        .HasComment("管段编码");
                    b.Property<string>("PipeSpecMode")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("管段型号");
                    b.Property<decimal>("PipeWallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("套管直径(mm)");
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
@@ -50,6 +50,7 @@
        context.Services.AddSingleton<IProjectService, PipeLineLemsProjectService>();
        context.Services.AddScoped<IMesAppService, MesAppService>();
        context.Services.AddScoped<IWorkPlanAppService, WorkPlanAppService>();
        context.Services.AddScoped<IWorkTaskAppService, WorkTaskAppService>();
        //context.Services.AddScoped<ILMesOperateAppService, LMesOperateAppService>();
        //context.Services.AddScoped<IWmsTaskRepository, EfCoreWmsTaskRepository>();
        //context.Services.AddScoped<IWmsMaterialRepository, EfCoreWmsMaterialRepository>();
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -113,6 +113,64 @@
        }
        /// <summary>
        /// ä¸‹å‘法兰冲码
        /// </summary>
        /// <param name="input">标识符.</param>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("SendFlangeCode")]
        public virtual async Task<MesOrderResponse> SendFlangeCode([FromBody] SendFlangeCodeInput input)
        {
            try
            {
                MyCurrentUser myCurrentUser = new MyCurrentUser()
                {
                    UserAccount = _currentUser.UserAccount,
                    UserId = _currentUser.UserId
                };
                return await sharedService.SendFlangeCode_StartProduction(input, _serviceProvider, myCurrentUser);
            }
            catch (Exception ex)
            {
                return new MesOrderResponse()
                {
                    Code = "400",
                    Message = ex.Message
                };
            }
        }
        /// <summary>
        /// æ³•兰冲码完工
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("SendFlangeCode_FinishProduction")]
        public virtual async Task<MesOrderResponse> SendFlangeCode_FinishProduction([FromBody] CompleteAssemblyProcessInput input)
        {
            try
            {
                MyCurrentUser myCurrentUser = new MyCurrentUser()
                {
                    UserAccount = _currentUser.UserAccount,
                    UserId = _currentUser.UserId
                };
                return await sharedService.SendFlangeCode_CompleteAssemblyProcess(_serviceProvider, input, myCurrentUser);
            }
            catch (Exception ex)
            {
                return new MesOrderResponse()
                {
                    Code = "400",
                    Message = ex.Message
                };
            }
        }
        /// <summary>
        /// å¼€å·¥
        /// </summary>
        /// <param name="input"></param>
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkTaskController.cs
@@ -1,8 +1,8 @@
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; 
using CMS.Framework.AspNetCore.Users; 
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask; 
using CMS.Plugin.PipeLineLems.Application.Contracts.Services; 
using CmsQueryExtensions.Entitys;
using Microsoft.AspNetCore.Authorization; 
using Microsoft.AspNetCore.Http; 
using Microsoft.AspNetCore.Mvc; 
@@ -10,7 +10,6 @@
using System.Reflection; 
using Volo.Abp; 
using Volo.Abp.Application.Dtos; 
using CmsQueryExtensions.Entitys;
 
namespace CMS.Plugin.PipeLineLems.Controller 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -24,6 +24,7 @@
using NPOI.SS.Formula.Functions;
using CMS.Plugin.PipeLineLems.Application.Implements;
using CmsQueryExtensions.Entitys;
using CMS.Plugin.PipeLineLems.Domain.WorkTask;
namespace CMS.Plugin.PipeLineLems.ProjectService
{
@@ -35,7 +36,6 @@
        private IServiceProvider _serviceProvider;
        private readonly ILogger<PipeLineLemsProjectService> _logger;
        private readonly IVariableDataCache _variableDataCache;
        /// <summary>
        /// å˜é‡æœåŠ¡
@@ -95,6 +95,7 @@
                { "装配完工信号", "装配完工信号(描述)" },
                { "焊接完工信号", "焊接完工信号(描述)" },
                { "法兰冲码完工信号", "法兰冲码完工信号(描述)" },
            };
            // åˆ›å»ºé€šé“监听
@@ -298,6 +299,24 @@
                        });
                    }
                }
                if (changed.Name == "法兰冲码完工信号")
                {
                    if (changed.New?.Value.SafeString().ToBool() == true)
                    {
                        _ = Task.Run(async () =>
                        {
                            await HanlderFor法兰冲码完工信号Async();
                        });
                    }
                    else
                    {
                        _ = Task.Run(async () =>
                        {
                            await HanlderFor完工信号WhenFalseAsync("法兰冲码");
                        });
                    }
                }
            }
        }
@@ -465,7 +484,9 @@
        {
            var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
            var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
            var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
            using var scope = _serviceProvider.CreateScope();
@@ -492,6 +513,10 @@
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workTaskList = await workTaskAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workTaskList?.Count == 0) return;//结束
                                                         //更新为生产中
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
@@ -507,6 +532,13 @@
                    };
                    var ret = _variableService.WriteValueAsync(keyValuePairs_productID);
                    //更新 ä»»åŠ¡ ä¸ºç”Ÿäº§ä¸­
                    var new_workTaskList = workTaskList.Where(x => x.ProcessRouteNumber == "切割").ToList();
                    foreach (var item in new_workTaskList)
                    {
                        item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
                    }
                    await workTaskRepository.UpdateManyAsync(new_workTaskList);
                    //更新为生产中 
                    var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "切割").ToList();
@@ -737,7 +769,9 @@
        {
            var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
            var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
            var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
            using var scope = _serviceProvider.CreateScope();
@@ -763,7 +797,26 @@
                    callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo);
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workTaskList = await workTaskAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workTaskList?.Count == 0) return;//结束
                    var new_workTaskList = workTaskList.Where(x => x.ProcessName == "切割工序").ToList();
                    //更新为生产中
                    foreach (var item in new_workTaskList)
                    {
                        item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.生产中;
                        item.Remark = "更新生产中";
                    }
                    await workTaskRepository.UpdateManyAsync(new_workTaskList);
                    var new_workTaskList_printCode = workTaskList.Where(x => x.ProcessName == "打码工序").ToList();
                    foreach (var item in new_workTaskList_printCode)
                    {
                        item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已完成;
                        item.Remark = "更新已完成";
                    }
                    await workTaskRepository.UpdateManyAsync(new_workTaskList_printCode);
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
@@ -778,6 +831,8 @@
                        { "CMS反馈请求生成切割产品码信号结果", true},
                    };
                    var ret = _variableService.WriteValueAsync(keyValuePairs_productID);
                    var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "装配").ToList();
                    //更新为生产中 
@@ -855,12 +910,12 @@
                    {
                        UserAccount = userName.Content.Value.SafeString().ToString()
                    };
                    sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName="装配工序" }, myCurrentUser);
                    await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "装配工序" }, myCurrentUser);
                }
                catch (Exception)
                catch (Exception ex)
                {
                    _logger.LogException(ex, LogLevel.Error);
                }
            }
        }
@@ -897,12 +952,53 @@
                    {
                        UserAccount = userName.Content.Value.SafeString().ToString()
                    };
                    sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "焊接工序" }, myCurrentUser);
                    await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "焊接工序" }, myCurrentUser);
                }
                catch (Exception)
                catch (Exception ex)
                {
                    _logger.LogException(ex, LogLevel.Error);
                }
            }
        }
        /// <summary>
        /// æ³•兰冲码完工信号=true时
        /// </summary>
        /// <returns></returns>
        private async Task HanlderFor法兰冲码完工信号Async()
                {
            var txt = "法兰冲码";
            var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
            var pipeSpecCode = await _variableService.ReadValueAsync($"{txt}管段编码");
            if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString()))
            {
            }
            else
            {
                var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString();
                CallMaterialOrder callMaterialOrder = null;
                try
                {
                    var sharedService = _serviceProvider.GetRequiredService<SharedService>();
                    var userName = await _variableService.ReadValueAsync($"{txt}人");
                    MyCurrentUser myCurrentUser = new MyCurrentUser()
                    {
                        UserAccount = userName.Content.Value.SafeString().ToString()
                    };
                    await sharedService.SendFlangeCode_CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput()
                    { PipeSpecCode = myPipeSpecCode, ProcessName = $"{txt}工序" }, myCurrentUser);
                }
                catch (Exception ex)
                {
                    _logger.LogException(ex, LogLevel.Error);
                }
            }
        }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkTaskµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/AppService/AppService_Generate.cs
@@ -22,11 +22,13 @@
            string attrString = "";
            List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForUpdateMode(param.ColumnNameList);
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttributeForUpdateModel(newColumnNameList[i], param);
            }
            str = str.Replace("$UpdateAttributes$", attrString);
            //优化,这个地方不用了
            //for (int i = 0; i < newColumnNameList.Count; ++i)
            //{
            //    attrString += StructStrHelper.GenerateAttributeForUpdateModel(newColumnNameList[i], param);
            //}
            //str = str.Replace("$UpdateAttributes$", attrString);
            attrString = "";
            for (int i = 0; i < newColumnNameList.Count; ++i)
@@ -42,13 +44,13 @@
            }
            str = str.Replace("$UpdateAttributesForCheckCreateOrUpdateDtoAsync$", attrString);
            attrString = "";
            for (int i = 0; i < newColumnNameList.Count; ++i)
            {
                attrString += StructStrHelper.GenerateAttribute_AppService_ImportAsync(newColumnNameList[i], param);
            }
            str = str.Replace("$AppService_ImportAsync$", attrString);
            //优化,这代码不用了
            //attrString = "";
            //for (int i = 0; i < newColumnNameList.Count; ++i)
            //{
            //    attrString += StructStrHelper.GenerateAttribute_AppService_ImportAsync(newColumnNameList[i], param);
            //}
            //str = str.Replace("$AppService_ImportAsync$", attrString);
            return str;
        }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.Designer.cs
@@ -570,6 +570,7 @@
            this.ck_IsDeletefile.AutoSize = true;
            this.ck_IsDeletefile.Checked = true;
            this.ck_IsDeletefile.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ck_IsDeletefile.ForeColor = System.Drawing.Color.Red;
            this.ck_IsDeletefile.Location = new System.Drawing.Point(561, 724);
            this.ck_IsDeletefile.Name = "ck_IsDeletefile";
            this.ck_IsDeletefile.Size = new System.Drawing.Size(192, 16);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -36,7 +36,7 @@
            this.tb_ChinaComment.Text = "物料基础信息表";//中文注释
            this.tb_MenuName.Text = "物料信息";//中文注释
            this.tb_PageMenuInstanceName.Text = "wmsMaterial";
            this.tb_CreatePerson.Text = "shaocx";//创建人
            this.tb_CreatePerson.Text = "";//创建人
            this.tb_EntityName.Text = "WmsMaterial";//实体类名
            this.tb_LikeQueryAttrs.Text = "'MaterialCode', 'MaterialName', 'Remark'";
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/AppServiceÄ£°å.txt
@@ -1,16 +1,15 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CMS.Plugin.$NameSpacePath$.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CmsQueryExtensions;
using CmsQueryExtensions.Entitys;
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;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.$NameSpacePath$.Application.Implements;
@@ -145,7 +144,8 @@
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
        $UpdateAttributes$
        // æ‰¹é‡èµ‹å€¼æ‰€æœ‰å¯æ˜ å°„字段(通过匿名对象)
        updateObj = ObjectMapper.Map(input, updateObj); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
        updateObj.LastModifierName = input.LastModifierName;//修改人
@@ -288,7 +288,7 @@
        Check.NotNull(input, nameof(input));
        var $EntityInstanceName$CreateDtos = new List<(int RowIndex, $EntityName$CreateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$UpdateDto Item)>();
        var $EntityInstanceName$UpdateDtos = new List<(int RowIndex, Guid Id, $EntityName$ Item)>();
        var importItems = input.$EntityName$s;
        if (importItems != null && importItems.Any())
@@ -322,20 +322,13 @@
                var old$EntityName$ = await _$EntityInstanceName$Repository.FindByNameAsync(impItem.$ValidateRepeatName$);
                if (old$EntityName$ != null)
                {
                    var $EntityInstanceName$UpdateDto = new $EntityName$UpdateDto
                    {
                        $AppService_ImportAsync$
                    };
                    $EntityInstanceName$UpdateDtos.Add((impItem.RowIndex, old$EntityName$.Id, $EntityInstanceName$UpdateDto));
                    old$EntityName$ = ObjectMapper.Map(impItem, old$EntityName$); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    $EntityInstanceName$UpdateDtos.Add((impItem.RowIndex, old$EntityName$.Id, old$EntityName$));
                }
                else
                {
                    var $EntityInstanceName$CreateDto = new $EntityName$CreateDto
                    {
                        $AppService_ImportAsync$
                    };
                    var $EntityInstanceName$CreateDto = new $EntityName$CreateDto { };
                    $EntityInstanceName$CreateDto = ObjectMapper.Map(impItem, $EntityInstanceName$CreateDto); // ç­‰æ•ˆäºŽæ‰‹åŠ¨èµ‹å€¼æ‰€æœ‰åŒ¹é…å­—æ®µ
                    $EntityInstanceName$CreateDtos.Add((impItem.RowIndex, $EntityInstanceName$CreateDto));
                }
            }
@@ -362,7 +355,7 @@
            try
            {
                $EntityInstanceName$Dto.Item.LastModifierName = myCurrentUser.UserAccount;//修改人
                await UpdateAsync($EntityInstanceName$Dto.Id, $EntityInstanceName$Dto.Item);
                await _$EntityInstanceName$Repository.UpdateAsync($EntityInstanceName$Dto.Item);
            }
            catch (Exception e)
            {
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/IAppServiceÄ£°å.txt
@@ -1,8 +1,8 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using Volo.Abp.Application.Services;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CmsQueryExtensions.Entitys;
using System.Linq.Expressions;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Application/MapperProfiles/AutoMapperProfileÄ£°å.txt
@@ -2,6 +2,7 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using Volo.Abp.ObjectExtending;
using static CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$.$EntityName$sImportModel;
namespace CMS.Plugin.$NameSpacePath$.Application.MapperProfiles;
@@ -22,5 +23,10 @@
        CreateMap<$EntityName$, $EntityName$Dto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<$EntityName$CreateDto, $EntityName$>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<Get$EntityName$Input, $EntityName$>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<$EntityName$UpdateDto, $EntityName$>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<$EntityName$ImportModel, $EntityName$CreateDto>(MemberList.None);
        CreateMap<$EntityName$ImportModel, $EntityName$UpdateDto>(MemberList.None);
        CreateMap<$EntityName$ImportModel, $EntityName$>(MemberList.None);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/ControllerÄ£°å.txt
@@ -1,8 +1,8 @@
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Framework.AspNetCore.Users;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CmsQueryExtensions.Entitys;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -10,7 +10,6 @@
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.$NameSpacePath$.Controller
{
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClassÄ£°å.txt
@@ -25,8 +25,10 @@
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置 
import {  
  FILTER_MODE_OPTIONS_STRING
  FILTER_MODE_OPTIONS_STRING_KEY
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'; 
// å¼•入公共高级查询工具文件
import { commonSaveCurHighQueryData,setValueForCurHighQueryData,commonGetHighQueryForm,initQueryForm,GetFilteredData } from '@/utils/myHighQueryUtils';
interface RenderTableType {
  url?: string
@@ -69,12 +71,7 @@
    //定义高级查询引用
   const $PageMenuInstanceName$QueryDrawerRef=ref(null);
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    })
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题)
    const _searchFormInputAttrs = ref([
     $LikeQueryAttrs$
@@ -96,34 +93,30 @@
      }
    }
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    /*******************************************************[高级查询]开始********************************************************************************* */
    // ç»„件挂载时获取枚举数据 
    onMounted(() => { 
      fetchEnumData() 
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      resetQuery();
    }) 
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】)
    const handleQueryForMain = async () => {
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
      tableRef.value.getList(_curHighQueryData.value)
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】)
    const handleQuery = async (extraParams = {}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
      tableRef.value.getList(filteredData)
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½®
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
      initQueryForm(queryForm,_searchFormInputAttrs,FILTER_MODE_OPTIONS_STRING_KEY);
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
    }
     //新版的导出方法
     const handleExport=()=>{
@@ -131,34 +124,9 @@
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•
    const closeQuery = (extraParams={}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
      GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
    }
    //保存查询值
    const commonSaveCurHighQueryData=(filteredData={})=>{
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value;
    }
     //获取高级查询弹出框的查询值
     const commonGetHighQueryForm=(extraParams={})=>{
      // è¿‡æ»¤æŽ‰ undefined çš„值
      let filteredData = Object.assign(
        {},
        ...Object.entries(extraParams).map(([key, value]) =>
          value !== undefined ? { [key]: value } : {}
        )
      )
      //组合模糊查询
      filteredData.searchVal = queryForm.value.searchVal
      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      return filteredData;
    }
    /*******************************************************[高级查询]结束********************************************************************************* */
    /**
     * @returns è¡¨æ ¼
@@ -297,7 +265,7 @@
                                placeholder="请选择"
                                class={styles.formItem}
                              >
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                {FILTER_MODE_OPTIONS_STRING_KEY.map((option) => (
                                  <ElOption
                                    key={option.value}
                                    label={option.label}
¹Ü×ÓÏßLMESDemo.cmsproj
Binary files differ