333
schangxiang@126.com
2025-05-16 9796651f30deb9eee38c9d846255b293fbba15eb
333
已添加5个文件
已修改22个文件
1194 ■■■■ 文件已修改
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.d.ts 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.tsx 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/utils/commonOptionConstants.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanDrawer.tsx 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanQueryDrawer.tsx 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/Dialog/WorkPlanQueryDrawer/WorkPlanQueryDrawer.tsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/WorkPlan.tsx 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateDto.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanUpdateDto.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/CallMaterialOrder.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrderRecord/CallMaterialOrderRecord.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkPlan导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.d.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
import { VNode, Component, DefineComponent } from 'vue'
export interface OptionItemType {
  label?: string
  description?: string
  name?: string
  value: string | number
}
export interface FormItemPropType {
  prop?: string | Ref<string>
  highSelectProp?: string | Ref<string>
  label?: String | Ref<string>
  rules?: any[] | Ref<any[]>
  disabled?: boolean | Ref<boolean>
  isDateControl?: boolean | Ref<boolean>
  placeholder?: string | Ref<string>
  type?: string | Ref<string>
  width?: string | Ref<string>
  el?: string | Component | DefineComponent | Ref<string>
  options?: OptionItemType[] | any[] | Ref<any>
  highSelectAttrs?: object | Ref<object>
  isTitle?: boolean
  title?:string | Component
  [key: string]: any | Ref<string>
}
export interface FormPropsType {
  formData: { [key: string]: any }
  formItemProps: FormItemPropType[]
  [key: string]: any
}
export interface PropsType {
  formItemProps: FormItemPropType[]
  formData: { [key: string]: any }
  labelWidth: string
  [key: string]: any
}
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
.formStyle {
  .formItem {
    // ç§»é™¤å›ºå®šå®½åº¦é™åˆ¶
    width: auto !important;
    margin-right: 0 !important;
  }
  .formControl {
    flex: 1; // è®©æŽ§ä»¶å æ®å‰©ä½™ç©ºé—´
    min-width: 0; // å…è®¸æŽ§ä»¶æ”¶ç¼©
  }
  .formItemLabel {
    display: inline-flex;
    justify-content: flex-end;
    align-items: center;
    flex: 0 0 auto;
    font-size: var(--cs-form-label-font-size);
    color: var(--cs-text-color-regular);
    height: 32px;
    line-height: 32px;
    padding: 0 12px 0 0;
    box-sizing: border-box;
    > img {
      margin-left: 10px;
    }
  }
  :global(.cs-select) {
    width: 100%;
  }
  // ç§»é™¤å›ºå®šå®½åº¦è®¾ç½®
  :global(.cs-form--inline .cs-form-item) {
    width: auto !important;
  }
  :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
    margin-right: 0 !important;
  }
}
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQuery.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,245 @@
// import { ElInput } from "element-plus";
import {
  defineComponent,
  PropType,
  ref,
  Ref,
  SetupContext,
  computed,
  unref,
  markRaw,
  DefineComponent,
} from 'vue'
import styles from './DyFormForHighQuery.module.scss'
import ElInput from 'element-plus/es/components/input/index'
import Option from '@/components/Select/Option'
import Select from '@/components/Select/Select'
import SelectInput from '@/components/SelectInput/SelectInput'
import type { FormInstance } from 'element-plus'
import Icon from '../Icon/Icon'
import {
  FormPropsType,
  FormItemPropType,
  PropsType,
  OptionItemType,
} from './DyFormForHighQuery.d'
import Variable from '../Variable/Variable'
import Title from '../Title/Title'
import TextareaFlow from '../Flow/Flow'
import get from 'lodash/get'
import set from 'lodash/set'
const formItemElementMap = markRaw<Record<string, any>>({
  input: ElInput,
  select: Select,
  selectInput: SelectInput,
  variable: Variable,
  textareaFlow: TextareaFlow,
})
const Type: Record<string, any> = {
  select: 'select',
}
export default defineComponent<FormPropsType>({
  //@ts-ignore
  name: '动态表单',
  props: {
    labelWidth: {
      type: String,
      default: '100px',
    },
    labelPosition: {
      type: String,
      default: 'left',
    },
    formData: {
      type: Object as PropType<{ [key: string]: any }>,
      default: () => ({}),
    },
    formItemProps: {
      type: Array,
      default: () => [],
    },
    inLine: {
      type: Boolean,
      default: false,
    },
  },
  setup(props: PropsType, { attrs, emit, expose }: SetupContext) {
    const formRef = ref<FormInstance>()
    const form: any = computed({
      get() {
        return props.formData
      },
      set(v) {
        emit('update:formData', v)
      },
    })
    const currentWidgetModel = computed(() => {
      return (path: string) => {
        return get(form.value, path)
      }
    })
    const validate = () => {
      if (!formRef.value) return false
      return new Promise((resolve, reject) => {
        formRef.value?.validate((valid: boolean) => {
          if (valid) {
            resolve(true)
          } else {
            reject(false)
          }
        })
      })
    }
    const resetForm = () => {
      if (!formRef.value) return false
      formRef.value.resetFields()
    }
    const formItemProps = computed(() => {
      return props.formItemProps || []
    })
    expose({ validate, resetForm })
    const FormRender: any = ($props: any) => {
      const item: FormItemPropType = $props.item
      const options = $props.item.options || []
      if (item.el && Type[item.el as string]) {
        return options.map((el: OptionItemType) => (
          <Option
            label={el.label || el.description || el.name}
            value={el.value}
          ></Option>
        ))
      }
      return null
    }
    const FormRenderForHighSelectOptions: any = ($props: any) => {
      const item: FormItemPropType = $props.item
      const options = $props.item.highSelectAttrs?.options || []
      if (1===1) {
        return options.map((el: OptionItemType) => (
          <Option
            label={el.label || el.description || el.name}
            value={el.value}
          ></Option>
        ))
      }
      return null
    }
    const onUpdateModelValue = (v: string | number, prop: string) => {
      set(form.value, prop, v)
    }
    return () => {
      return (
        <div class={styles.formStyle}>
          <el-form
            labelPosition={props.labelPosition}
            labelWidth={props.labelWidth}
            model={form.value}
            ref={formRef}
            inline={props.inLine}
          >
            {formItemProps.value.map(
              (item: FormItemPropType, index: number) => {
                if (item.isTitle) {
                  if (typeof item.title === 'string') {
                    return (
                      <Title style="margin-bottom: 10px">{item.title}</Title>
                    )
                  }
                  return item.title
                }
                const itemProps: FormItemPropType = {}
                Object.entries(item).forEach(([key, value]) => {
                  itemProps[key] = unref(value)
                })
                const el =
                  typeof itemProps.el === 'string'
                    ? formItemElementMap[itemProps.el]
                    : itemProps.el || null
                const Component = el
                const el2 =
                   formItemElementMap['select'];
                const ComponentForHighSelect = el2
                return Component && !item.isHide ? (
                  <el-form-item
                    label={itemProps.label}
                    prop={itemProps.prop}
                    rules={itemProps.rules}
                    key={itemProps.prop}
                    vSlots={
                      itemProps.labelIcon
                        ? {
                            label: () => (
                              <label class={styles.formitemPropsLabel}>
                                {itemProps.label}
                                <Icon icon={itemProps.labelIcon} />
                              </label>
                            ),
                          }
                        : null
                    }
                  >
                   {/* æ·»åŠ çš„æ¯”è¾ƒæ“ä½œç¬¦é€‰æ‹©å™¨ */}
                   {/* ä½¿ç”¨flex布局让三个元素在同一行 */}
                   <div class="flex items-center w-full" style="width:100%">
                  {/* <el-select
                  size="small"
                  style="margin-right: 8px; min-width: 10px;"
                >
                  <el-option label="等于" value="2" />
                  <el-option label="不等于" value="8" />
                </el-select>  */}
                 {/* å½“组件类型不是日期控件时显示ComponentForHighSelect */}
                 {(!itemProps.isDateControl && (
  // ComponentForHighSelect çš„æ¸²æŸ“代码
  <ComponentForHighSelect style="width:150px;"
                   {...itemProps.highSelectAttrs}
                     modelValue={currentWidgetModel.value(itemProps.highSelectAttrs?.prop || '')}
                     onUpdate:modelValue={(val: string | number) =>
                        onUpdateModelValue(val, itemProps.highSelectAttrs?.prop || '')
                      }>
                  <FormRenderForHighSelectOptions item={itemProps} />
                </ComponentForHighSelect>
))}
 {/* æ—¥æœŸæŽ§ä»¶æ—¶çš„占位元素 */}
{itemProps.isDateControl && <span style="width:150px;margin-right:8px;"></span>}
                      &nbsp;
                    <Component
                      style={{
                        width: itemProps.width, // é»˜è®¤å æ»¡å‰©ä½™å®½åº¦
                        // width: itemProps.width , // é»˜è®¤å æ»¡å‰©ä½™å®½åº¦
                        height: itemProps.height,
                      }}
                      {...itemProps}
                      // v-model={form.value[itemProps.prop as keyof any]}
                      modelValue={currentWidgetModel.value(itemProps.prop)}
                      onUpdate:modelValue={(val: string | number) =>
                        onUpdateModelValue(val, itemProps.prop)
                      }
                    >
                      <FormRender item={itemProps} />
                    </Component>
                    </div>
                  </el-form-item>
                ) : null
              }
            )}
          </el-form>
        </div>
      )
    }
  },
})
PipeLineLems/pipelinelems_web/src/components/DyFormForHighQuery/DyFormForHighQueryOptions.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
// å­—符串类查询
export const FILTER_MODE_OPTIONS_STRING = [
    { label: '模糊查询', value: 1 },
    { label: '精准查询', value: 2 },
  ];
  // æ•°å­—类查询
export const FILTER_MODE_OPTIONS_NUM = [
    { label: '精准查询', value: 2 },
    { label: '大于等于', value: 3 },
    { label: '小于等于', value: 4 },
    { label: '大于', value: 5 },
    { label: '小于', value: 6 },
    { label: '不等于', value: 7 },
  ];
    // bool查询
export const FILTER_MODE_OPTIONS_BOOL = [
    { label: '精准查询', value: 2 },
    { label: '不等于', value: 7 },
  ];
PipeLineLems/pipelinelems_web/src/utils/commonOptionConstants.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
// æ˜¯ å¦(高级查询用)
  export const BOOLEAN_OPTIONS = [
    { label: '是', value: 'true'},
    { label: '否', value: 'false' },
  ];
  // æ˜¯ å¦(新增、修改界面专用)
  export const BOOLEAN_OPTIONS_AddEdit = [
    { label: '是', value: true},
    { label: '否', value: false },
  ];
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanDrawer.tsx
@@ -14,6 +14,10 @@
import isEqual from 'lodash/isEqual' 
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
import { cloneDeep } from 'lodash' 
// å¼•入公共选项配置
import {
  BOOLEAN_OPTIONS_AddEdit
} from '@/utils/commonOptionConstants';
 
export const useWorkPlanDrawer = (props: any, ctx?: any) => { 
  const workPlanDrawer = injectModel<WorkPlanDrawer>('workPlanDrawer') 
@@ -304,11 +308,25 @@
                   placeholder: '请输入设备代码', 
                }, 
                { 
                   label: '工件名称',
                   prop: 'workpieceName',
                   label: '产线编码',
                   prop: 'prodLineCode',
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工件名称',
                   placeholder: '请输入产线编码',
                },
                {
                   label: '船号',
                   prop: 'shipNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入船号',
                },
                {
                   label: '项目号',
                   prop: 'projectNumber',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入项目号',
                }, 
                { 
                   label: '工序名称', 
@@ -497,7 +515,9 @@
productCode: formData.value.productCode, 
workstationCode: formData.value.workstationCode, 
equipmentCode: formData.value.equipmentCode, 
workpieceName: formData.value.workpieceName,
prodLineCode: formData.value.prodLineCode,
shipNumber: formData.value.shipNumber,
projectNumber: formData.value.projectNumber,
processName: formData.value.processName, 
pipeFittingCode: formData.value.pipeFittingCode, 
preSerialNumber: formData.value.preSerialNumber, 
@@ -582,7 +602,9 @@
productCode: res.productCode, 
workstationCode: res.workstationCode, 
equipmentCode: res.equipmentCode, 
workpieceName: res.workpieceName,
prodLineCode: res.prodLineCode,
shipNumber: res.shipNumber,
projectNumber: res.projectNumber,
processName: res.processName, 
pipeFittingCode: res.pipeFittingCode, 
preSerialNumber: res.preSerialNumber, 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Controllers/WorkPlanQueryDrawer.tsx
@@ -14,6 +14,15 @@
import isEqual from 'lodash/isEqual' 
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
import { cloneDeep } from 'lodash' 
// å¼•入公共选项配置
import {
  FILTER_MODE_OPTIONS_STRING,
  FILTER_MODE_OPTIONS_NUM,
  FILTER_MODE_OPTIONS_BOOL
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
import {
  BOOLEAN_OPTIONS
} from '@/utils/commonOptionConstants';
 
export const useWorkPlanQueryDrawer = (props: any, ctx?: any) => { 
  const workPlanDrawer = injectModel<WorkPlanDrawer>('WorkPlanDrawer') 
@@ -84,6 +93,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入任务编码', 
                   highSelectAttrs:{
                     prop: 'taskCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '计划状态', 
@@ -93,6 +108,12 @@
                   option: [], 
                   //disabled: disabled, 
                   placeholder: '请输入计划状态', 
                   highSelectAttrs:{
                     prop: 'workPlanStatus_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_BOOL
                   }
                }, 
                { 
                   label: '叫料状态', 
@@ -102,6 +123,12 @@
                   option: [], 
                   //disabled: disabled, 
                   placeholder: '请输入叫料状态', 
                   highSelectAttrs:{
                     prop: 'callMaterialStatus_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_BOOL
                   }
                }, 
                { 
                   label: '原料标识', 
@@ -109,6 +136,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入原料标识', 
                   highSelectAttrs:{
                     prop: 'dataIdentifier_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '原料型号', 
@@ -116,6 +149,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入原料型号', 
                   highSelectAttrs:{
                     prop: 'materialMode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '长度(mm)', 
@@ -132,6 +171,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入长度(mm)', 
                   highSelectAttrs:{
                     prop: 'length_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '打码内容', 
@@ -139,6 +184,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入打码内容', 
                   highSelectAttrs:{
                     prop: 'markingContent_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '打码位置', 
@@ -155,6 +206,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入打码位置', 
                   highSelectAttrs:{
                     prop: 'markingPosition_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '切割位置', 
@@ -171,6 +228,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入切割位置', 
                   highSelectAttrs:{
                     prop: 'cuttingPosition_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '管段数量', 
@@ -187,6 +250,12 @@
                   precision: 0, 
                   //disabled: disabled, 
                   placeholder: '请输入管段数量', 
                   highSelectAttrs:{
                     prop: 'quantity_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '法兰厚度(mm)', 
@@ -203,6 +272,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入法兰厚度(mm)', 
                   highSelectAttrs:{
                     prop: 'flangeThickness_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '法兰直径(mm)', 
@@ -219,6 +294,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入法兰直径(mm)', 
                   highSelectAttrs:{
                     prop: 'flangeInnerDiameter_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '法兰公称压力', 
@@ -226,6 +307,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入法兰公称压力', 
                   highSelectAttrs:{
                     prop: 'weldingHeatInput_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '法兰冲码内容', 
@@ -233,6 +320,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入法兰冲码内容', 
                   highSelectAttrs:{
                     prop: 'pipeAllowableStress_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '套管长度(mm)', 
@@ -249,6 +342,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入套管长度(mm)', 
                   highSelectAttrs:{
                     prop: 'pipeDiameter_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '套管直径(mm)', 
@@ -265,6 +364,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入套管直径(mm)', 
                   highSelectAttrs:{
                     prop: 'pipeWallThickness_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '工厂代码', 
@@ -272,6 +377,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工厂代码', 
                   highSelectAttrs:{
                     prop: 'factoryCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '产品代码', 
@@ -279,6 +390,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入产品代码', 
                   highSelectAttrs:{
                     prop: 'productCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '工位代码', 
@@ -286,6 +403,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工位代码', 
                   highSelectAttrs:{
                     prop: 'workstationCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '设备代码', 
@@ -293,13 +416,51 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入设备代码', 
                   highSelectAttrs:{
                     prop: 'equipmentCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '工件名称',
                   prop: 'workpieceName',
                   label: '产线编码',
                   prop: 'prodLineCode',
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工件名称',
                   placeholder: '请输入产线编码',
                   highSelectAttrs:{
                     prop: 'prodLineCode_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: '工序名称', 
@@ -307,6 +468,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工序名称', 
                   highSelectAttrs:{
                     prop: 'processName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '管件编码', 
@@ -314,6 +481,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入管件编码', 
                   highSelectAttrs:{
                     prop: 'pipeFittingCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '顺序号', 
@@ -321,6 +494,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入顺序号', 
                   highSelectAttrs:{
                     prop: 'preSerialNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '管段编码', 
@@ -328,6 +507,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入管段编码', 
                   highSelectAttrs:{
                     prop: 'pipeSpecCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '管段名称', 
@@ -335,6 +520,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入管段名称', 
                   highSelectAttrs:{
                     prop: 'pipeSectionName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '外径(mm)', 
@@ -351,6 +542,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入外径(mm)', 
                   highSelectAttrs:{
                     prop: 'outerDiameter_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '壁厚(mm)', 
@@ -367,6 +564,12 @@
                   precision: 2, 
                   //disabled: disabled, 
                   placeholder: '请输入壁厚(mm)', 
                   highSelectAttrs:{
                     prop: 'thickness_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_NUM
                   }
                }, 
                { 
                   label: '材质', 
@@ -374,6 +577,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入材质', 
                   highSelectAttrs:{
                     prop: 'material_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '工艺流向编号', 
@@ -381,6 +590,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入工艺流向编号', 
                   highSelectAttrs:{
                     prop: 'processRouteNumber_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '计划开始时间', 
@@ -395,6 +610,7 @@
                   width: '100%',
                   //disabled: disabled, 
                   placeholder: '请输入计划开始时间', 
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                }, 
                { 
                   label: '计划完成时间', 
@@ -409,6 +625,7 @@
                   width: '100%',
                   //disabled: disabled, 
                   placeholder: '请输入计划完成时间', 
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                }, 
                { 
                   label: '班组信息', 
@@ -416,6 +633,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入班组信息', 
                   highSelectAttrs:{
                     prop: 'teamInfo_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '时间戳', 
@@ -423,6 +646,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入时间戳', 
                   highSelectAttrs:{
                     prop: 'timestamp_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '创建时间', 
@@ -437,6 +666,7 @@
                   width: '100%',
                   //disabled: disabled, 
                   placeholder: '请输入创建时间', 
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                }, 
                { 
                   label: '修改时间', 
@@ -451,6 +681,7 @@
                   width: '100%',
                   //disabled: disabled, 
                   placeholder: '请输入修改时间', 
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                }, 
                { 
                   label: '创建人', 
@@ -458,6 +689,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入创建人', 
                   highSelectAttrs:{
                     prop: 'creatorName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '修改人', 
@@ -465,6 +702,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入修改人', 
                   highSelectAttrs:{
                     prop: 'lastModifierName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                }, 
                { 
                   label: '备注', 
@@ -472,6 +715,12 @@
                   el: 'input', 
                   //disabled: disabled, 
                   placeholder: '请输入备注', 
                   highSelectAttrs:{
                     prop: 'remark_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },  
  ]) 
  /** 
@@ -487,44 +736,83 @@
  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 || '', 
workpieceName: formData.value.workpieceName || '',
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; 
  } 
@@ -543,10 +831,53 @@
    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 = '' 
@@ -567,7 +898,9 @@
formData.value.productCode = '' 
formData.value.workstationCode = '' 
formData.value.equipmentCode = '' 
formData.value.workpieceName = ''
formData.value.prodLineCode = ''
formData.value.shipNumber = ''
formData.value.projectNumber = ''
formData.value.processName = '' 
formData.value.pipeFittingCode = '' 
formData.value.preSerialNumber = '' 
@@ -581,13 +914,11 @@
formData.value.plannedEndTime = '' 
formData.value.teamInfo = '' 
formData.value.timestamp = '' 
formData.value.deletionTime = ''
formData.value.operationRemark = ''
formData.value.deleteRemark = ''
formData.value.creationTime = ''
formData.value.lastModificationTime = ''
formData.value.creatorName = ''
formData.value.lastModifierName = ''
formData.value.remark = '' 
formData.value.extraField1 = ''
formData.value.extraField2 = ''
formData.value.extraField3 = ''
    //向父组件发送自定义事件 
    ctx.emit('restQuery'); 
  } 
@@ -623,6 +954,7 @@
 
  } 
  commonQueryEnumForFrom() 
  onResetForHighSelect();//重置公共select查询
  /** 
   * å¼¹çª—打开获取详情 
   */ 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/Dialog/WorkPlanQueryDrawer/WorkPlanQueryDrawer.tsx
@@ -5,7 +5,7 @@
import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' 
import styles from './WorkPlanQueryDrawer.module.scss' 
import { useWorkPlanQueryDrawer } from '../../../../Controllers/WorkPlanQueryDrawer.tsx' 
import DyForm from '@/components/DyForm/DyForm'
import DyFormForHighQuery from '@/components/DyFormForHighQuery/DyFormForHighQuery'
 
// @ts-ignore 
export default defineComponent<{ 
@@ -59,12 +59,12 @@
        before-close={onClose} 
        onClose={onClose} 
      > 
        <DyForm
        <DyFormForHighQuery
          ref={formRef} 
          formData={formData.value} 
          labelWidth="106px" 
          formItemProps={formItems} 
        ></DyForm>
        ></DyFormForHighQuery>
      </BaseQueryDrawer> 
    ) 
  }, 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts
@@ -10,21 +10,6 @@
  width:160, 
}, 
  field: 'processName',
  title: '工序名称',
  width:160,
},
{
  field: 'pipeSpecCode',
  title: '管段编码',
  width:160,
},
{
  field: 'pipeSectionName',
  title: '管段名称',
  width:160,
},
{
  field: 'workPlanStatusDesc', 
  title: '计划状态', 
  width:160, 
@@ -120,11 +105,25 @@
  width:160, 
}, 
  field: 'workpieceName',
  title: '工件名称',
  field: 'prodLineCode',
  title: '产线编码',
  width:160, 
}, 
{
  field: 'shipNumber',
  title: '船号',
  width:160,
},
{
  field: 'projectNumber',
  title: '项目号',
  width:160,
},
{
  field: 'processName',
  title: '工序名称',
  width:160,
},
  field: 'pipeFittingCode', 
  title: '管件编码', 
@@ -135,7 +134,16 @@
  title: '顺序号', 
  width:160, 
}, 
{
  field: 'pipeSpecCode',
  title: '管段编码',
  width:160,
},
{
  field: 'pipeSectionName',
  title: '管段名称',
  width:160,
},
  field: 'outerDiameter', 
  title: '外径(mm)', 
PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/WorkPlan.tsx
@@ -23,6 +23,10 @@
  ElFormItem, 
} from 'element-plus' 
import { injectModel } from '@/libs/Provider/Provider' 
// å¼•入公共选项配置
import {
  FILTER_MODE_OPTIONS_STRING
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
 
interface RenderTableType { 
  url?: string 
@@ -68,13 +72,14 @@
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶ 
    const queryForm = ref({ 
      searchVal: '', 
      str_searchFormInputAttrs:[]
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    }) 
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([ 
     'TaskCode','DataIdentifier','MaterialMode','MarkingContent','WeldingHeatInput','PipeAllowableStress','FactoryCode','ProductCode','WorkstationCode','EquipmentCode','WorkpieceName','ProcessName','PipeFittingCode','PreSerialNumber','PipeSpecCode','PipeSectionName','Material','ProcessRouteNumber','TeamInfo','Timestamp','CreatorName','LastModifierName','Remark'
     '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'
    ]); 
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/工件名称/工序名称/管件编码/顺序号/管段编码/管段名称/材质/工艺流向编号/班组信息/时间戳/创建人/修改人/备注');
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/原料标识/原料型号/打码内容/法兰公称压力/法兰冲码内容/工厂代码/产品代码/工位代码/设备代码/产线编码/船号/项目号/工序名称/管件编码/顺序号/管段编码/管段名称/材质/工艺流向编号/班组信息/时间戳/创建人/修改人/备注');
     
 
    // åŠ¨æ€æžšä¸¾é€‰é¡¹ 
@@ -106,16 +111,20 @@
      } 
    } 
 
    // å®šä¹‰å“åº”式查询数据
    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;
    }) 
 
    // å®šä¹‰å“åº”式查询数据
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[] });
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】) 
    const handleQueryForMain = async () => { 
      _curHighQueryData.value.searchVal = queryForm.value.searchVal; 
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value; 
      tableRef.value.getList(_curHighQueryData.value) 
    } 
@@ -128,6 +137,7 @@
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = '' 
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value; 
    } 
     //新版的导出方法 
@@ -145,6 +155,7 @@
    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; 
    } 
     //获取高级查询弹出框的查询值 
@@ -158,6 +169,7 @@
      ) 
      //组合模糊查询 
      filteredData.searchVal = queryForm.value.searchVal 
      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value; 
      return filteredData; 
    } 
@@ -304,7 +316,7 @@
 
          <div class={styles.headerContent}> 
            <div class={styles.header}> 
              {/* <IconButton
              <IconButton
                v-permission="workPlan-add" 
                icon="add-p" 
                onClick={onAddWorkPlan} 
@@ -312,8 +324,8 @@
              > 
                æ·»åŠ  
              </IconButton> 
              <el-divider direction="vertical" />
 
              <el-divider direction="vertical" />  */}
              <el-upload 
                v-permission="workPlan-import" 
                name="file" 
@@ -352,6 +364,21 @@
                /> 
                </el-tooltip> 
              </ElFormItem> 
              <ElFormItem label="" style="width:100px;">
                   <ElSelect
                                v-model={queryForm.value.searchVal_FilterMode}
                                placeholder="请选择"
                                class={styles.formItem}
                              >
                                {FILTER_MODE_OPTIONS_STRING.map((option) => (
                                  <ElOption
                                    key={option.value}
                                    label={option.label}
                                    value={option.value}
                                  />
                                ))}
                              </ElSelect>
              </ElFormItem>
              <IconButton type="primary" icon="search" onClick={handleQueryForMain}> 
                æŸ¥è¯¢ 
              </IconButton> 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/GetWorkPlanInput.cs
@@ -245,14 +245,34 @@
        public SearchFilterModeEnum EquipmentCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// å·¥ä»¶åç§°
        /// äº§çº¿ç¼–码
        /// </summary>
        public string WorkpieceName { get; set; }
        public string ProdLineCode { get; set; }
        /// <summary>
        /// å·¥ä»¶åç§°-查询关系运算符
        /// äº§çº¿ç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum WorkpieceName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        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>
        /// å·¥åºåç§°
@@ -349,7 +369,7 @@
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> PlannedStartTime { get; set; }
        public string PlannedStartTime { get; set; }
        /// <summary>
@@ -357,7 +377,7 @@
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> PlannedEndTime { get; set; }
        public string PlannedEndTime { get; set; }
        /// <summary>
@@ -385,7 +405,7 @@
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> CreationTime { get; set; }
        public string CreationTime { get; set; }
        /// <summary>
@@ -403,7 +423,7 @@
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> LastModificationTime { get; set; }
        public string LastModificationTime { get; set; }
        /// <summary>
@@ -441,7 +461,7 @@
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public List<string> DeletionTime { get; set; }
        public string DeletionTime { get; set; }
        /// <summary>
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateDto.cs
@@ -14,4 +14,9 @@
    /// æ˜¯å¦ç¦ç”¨ 
    /// </summary> 
    public bool? IsDisabled { get; set; } = false; 
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreatorName { get; set; }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanCreateOrUpdateDtoBase.cs
@@ -110,9 +110,19 @@
        public string? EquipmentCode { get; set; }
        /// <summary>
        /// å·¥ä»¶åç§°
        /// äº§çº¿ç¼–码
        /// </summary>
        public string? WorkpieceName { get; set; }
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
@@ -183,11 +193,6 @@
        /// åˆ›å»ºäººID
        /// </summary>
        public string? CreatorId { get; set; }
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreatorName { get; set; }
    /// <summary>
    /// ä¿®æ”¹äººID
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanDto.cs
@@ -133,9 +133,19 @@
        public string? EquipmentCode { get; set; }
        /// <summary>
        /// å·¥ä»¶åç§°
        /// äº§çº¿ç¼–码
        /// </summary>
        public string? WorkpieceName { get; set; }
        public string? ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string? ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string? ProjectNumber { get; set; }
        /// <summary>
        /// å·¥åºåç§°
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanExportModel.cs
@@ -131,10 +131,22 @@
        public string EquipmentCode { get; set; }
        /// <summary>
        /// å·¥ä»¶åç§°
        /// äº§çº¿ç¼–码
        /// </summary>
        [ExcelColumn(Name = "工件名称", Width = 25)]
        public string WorkpieceName { get; set; }
        [ExcelColumn(Name = "产线编码", Width = 25)]
        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>
        /// å·¥åºåç§°
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanInput.cs
@@ -1,4 +1,5 @@
using System;
using MiniExcelLibs.Attributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -232,9 +233,48 @@
        /// </summary>
        public DateTime? PlannedEndTime { get; set; }
        /// <summary>
        /// æ—¶é—´ä¿¡æ¯
        /// ç­ç»„信息
        /// </summary>
        public string TimeInfo { get; set; }
        public string TeamInfo { get; set; }
        /// <summary>
        /// æ—¶é—´æˆ³
        /// </summary>
        public string Timestamp { get; set; }
        /// <summary>
        /// äº§çº¿ç¼–码
        /// </summary>
        public string ProdLineCode { get; set; }
        /// <summary>
        /// èˆ¹å·
        /// </summary>
        public string ShipNumber { get; set; }
        /// <summary>
        /// é¡¹ç›®å·
        /// </summary>
        public string ProjectNumber { get; set; }
        /// <summary>
        /// æ‰“码位置
        /// </summary>
        public decimal MarkingPosition { get; set; }
        /// <summary>
        /// åˆ‡å‰²ä½ç½®
        /// </summary>
        public decimal CuttingPosition { get; set; }
        /// <summary>
        /// å£åŽš(mm)
        /// </summary>
        public decimal Thickness { get; set; }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/WorkPlanUpdateDto.cs
@@ -10,4 +10,9 @@
    /// å¹¶å‘戳 
    /// </summary> 
    public string ConcurrencyStamp { get; set; } 
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    public string LastModifierName { get; set; }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs
@@ -1,5 +1,6 @@
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
using CmsQueryExtensions.Entitys;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Application.Services;
@@ -20,13 +21,6 @@
    Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// æŒ‰ç…§ åŽŸæ–™æ ‡è®° æŸ¥æ‰¾ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier);
    /// <summary> 
    /// åˆ é™¤ä½œä¸šè®¡åˆ’表 
@@ -48,7 +42,7 @@
    /// </summary> 
    /// <param name="input"></param> 
    /// <returns></returns> 
    Task ImportAsync(WorkPlansImportModel input, string userId,string userAccount);
    Task ImportAsync(WorkPlansImportModel input, MyCurrentUser myCurrentUser);
    /// <summary> 
    /// å¯¼å‡ºä½œä¸šè®¡åˆ’表 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -463,7 +463,10 @@
            throw new UserFriendlyException($"原料标识为 '{callMaterialOrder.DataIdentifier}' çš„叫料记录状态为 '{callMaterialOrder.CallMaterialStatus}',不允许叫料");
        }
        //TODO:这里调用wms的叫料接口
        // æ›´æ–°æ•°æ®
        callMaterialOrder.MaterialBatch = GenerateRandomBatch();//wms返回的原料批次
        callMaterialOrder.WmsRetResult = "成功";
        callMaterialOrder.WmsTaskNo = GenerateRandomTaskNo();
        callMaterialOrder.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.叫料完成;
@@ -472,7 +475,7 @@
        await callMaterialOrderRepository.UpdateAsync(callMaterialOrder);
        //更新作业计划表
        var workPlanList = await workPlanRepository.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
        var workPlanList = await workPlanRepository.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
        foreach (var item in workPlanList)
        {
            item.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.叫料完成;
@@ -484,6 +487,7 @@
        var callMaterialOrderRecord = new CallMaterialOrderRecord()
        {
            CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.叫料完成,
            MaterialBatch = callMaterialOrder.MaterialBatch,
            MaterialMode = callMaterialOrder.MaterialMode,
            DataIdentifier = callMaterialOrder.DataIdentifier,
            Quantity = 1,
@@ -529,4 +533,13 @@
        // ç”Ÿæˆå‰ç¼€
        return $"WMS{timestamp}";
    }
    private string GenerateRandomBatch()
    {
        // èŽ·å–å½“å‰æ—¶é—´æˆ³ï¼ˆä»Ž1970-01-01 00:00:00 UTC到现在的秒数)
        long timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
        // ç”Ÿæˆå‰ç¼€
        return $"Batch{timestamp}";
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs
@@ -11,6 +11,7 @@
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Users;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
@@ -43,16 +44,6 @@
        return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await _workPlanRepository.GetAsync(id));
    }
    /// <summary>
    /// æŒ‰ç…§ åŽŸæ–™æ ‡è®° æŸ¥æ‰¾ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier)
    {
        return await _workPlanRepository.FindByDataIdentifierAsync(dataIdentifier);
    }
    /// <summary> 
    /// åˆ†é¡µèŽ·å–ä½œä¸šè®¡åˆ’è¡¨ 
@@ -308,13 +299,13 @@
    /// <param name="input"></param> 
    /// <returns></returns> 
    /// <exception cref="UserFriendlyException"></exception> 
    public async Task ImportAsync(WorkPlansImportModel input, string userId, string userAccount)
    public async Task ImportAsync(WorkPlansImportModel input, MyCurrentUser myCurrentUser)
    {
        //转换数据
        var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans);
        //await CreatebyApsAsync(result);
        await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this, userId, userAccount);
        await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this, myCurrentUser.UserId, myCurrentUser.UserAccount);
        //        Check.NotNull(input, nameof(input)); 
        //        var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/CallMaterialOrder.cs
@@ -22,6 +22,11 @@
        public string MaterialMode { get; set; }
        /// <summary>
        /// åŽŸæ–™æ‰¹æ¬¡
        /// </summary>
        public string MaterialBatch { get; set; }
        /// <summary>
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrderRecord/CallMaterialOrderRecord.cs
@@ -22,6 +22,12 @@
        public string MaterialMode { get; set; }
        /// <summary>
        /// åŽŸæ–™æ‰¹æ¬¡
        /// </summary>
        public string MaterialBatch { get; set; }
        /// <summary>
        /// å«æ–™çŠ¶æ€
        /// </summary>
        public CallMaterialStatusEnum CallMaterialStatus { get; set; }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/WorkPlan/IWorkPlanRepository.cs
@@ -31,15 +31,6 @@
    /// <returns></returns> 
    Task<int> GetMaxSortAsync();
    /// <summary>
    /// æŒ‰ç…§ åŽŸæ–™æ ‡è®° æŸ¥æ‰¾ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier, CancellationToken cancellationToken = default);
    /// <summary> 
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨ä½œä¸šè®¡åˆ’è¡¨ 
    /// </summary> 
@@ -60,6 +51,22 @@
    /// <returns></returns> 
    Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WorkPlan, bool>>> whereConditions, CancellationToken cancellationToken = default);
    /// <summary>
    /// ç‰©ç†åˆ é™¤ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="id">主键ID</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task DeletePermanentlyAsync(Guid id, CancellationToken cancellationToken = default);
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ä½œä¸šè®¡åˆ’表(直接删除,不软删除)
    /// </summary>
    /// <param name="ids">要删除的主键ID列表</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, CancellationToken cancellationToken = default);
    /// <summary> 
    /// æ ¹æ®æ¡ä»¶èŽ·å–ä½œä¸šè®¡åˆ’è¡¨åˆ—è¡¨ 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreWorkPlanRepository.cs
@@ -40,23 +40,6 @@
            .FirstOrDefaultAsync(t => t.TaskCode == name, GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// æŒ‰ç…§ åŽŸæ–™æ ‡è®° æŸ¥æ‰¾ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails()
            .Where(x => !x.IsDeleted)
            .Where(t => t.DataIdentifier == dataIdentifier)
            .OrderByDescending(x => x.CreationTime)
             .ToListAsync(GetCancellationToken(cancellationToken));
    }
    /// <summary> 
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨ä½œä¸šè®¡åˆ’表 
    /// </summary> 
@@ -130,6 +113,59 @@
    }
    /// <summary> 
    /// ç‰©ç†åˆ é™¤ä½œä¸šè®¡åˆ’表
    /// </summary>
    /// <param name="id">主键ID</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task DeletePermanentlyAsync(Guid id, CancellationToken cancellationToken = default)
    {
        var entity = await (await GetDbSetAsync())
            .FirstOrDefaultAsync(x => x.Id == id && !x.IsDeleted, GetCancellationToken(cancellationToken));
        if (entity == null)
        {
            throw new Volo.Abp.Domain.Entities.EntityNotFoundException(typeof(WorkPlan), id);
        }
        // 2. èŽ·å– DbContext å¹¶æ‰§è¡Œåˆ é™¤
        var dbContext = await GetDbContextAsync();
        // ç›´æŽ¥æ‰§è¡Œ SQL åˆ é™¤
        var sql = $"DELETE FROM scms_workplans WHERE Id ='{entity.Id.ToString()}'";
        await dbContext.Database.ExecuteSqlRawAsync(sql, cancellationToken);
    }
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ä½œä¸šè®¡åˆ’表(直接删除,不软删除)
    /// </summary>
    /// <param name="ids">要删除的主键ID列表</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, CancellationToken cancellationToken = default)
    {
        // 1. æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„实体(未软删除的记录)
        var entities = await (await GetDbSetAsync())
            .Where(x => ids.Contains(x.Id) && !x.IsDeleted)
            .ToListAsync(GetCancellationToken(cancellationToken));
        if (!entities.Any())
        {
            // å¦‚果没有需要删除的记录,直接返回(避免不必要的数据库操作)
            return;
        }
        // 2. èŽ·å– DbContext å¹¶æ‰§è¡Œæ‰¹é‡åˆ é™¤
        var dbContext = await GetDbContextAsync();
        var idsToDelete = entities.Select(e => e.Id).ToList();
        // ç›´æŽ¥æ‰§è¡Œ SQL åˆ é™¤
        var sql = $"DELETE FROM scms_workplans WHERE Id IN ({string.Join(",", idsToDelete.Select(id => $"'{id}'"))})";
        await dbContext.Database.ExecuteSqlRawAsync(sql, cancellationToken);
    }
    /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ä½œä¸šè®¡åˆ’è¡¨åˆ—è¡¨ 
    /// </summary> 
    /// <param name="whereConditions"></param> 
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -3,7 +3,6 @@
using CMS.Framework.AspNetCore.Users;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CmsQueryExtensions.Entitys;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -11,6 +10,7 @@
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.Controller
{
@@ -41,7 +41,7 @@
        /// <summary> 
        /// èŽ·å–ä½œä¸šè®¡åˆ’è¡¨ 
        /// </summary> 
        /// <param name="id">标识符.</param>
        /// <param name="id">主键ID</param>
        /// <returns></returns> 
        [HttpGet]
        [Route("{id}")]
@@ -53,7 +53,7 @@
        /// <summary> 
        /// åˆ†é¡µèŽ·å–ä½œä¸šè®¡åˆ’è¡¨çš„åˆ—è¡¨. 
        /// </summary> 
        /// <param name="input">输入.</param>
        /// <param name="input">查询参数</param>
        /// <returns></returns> 
        [HttpGet]
        [Route("Page")]
@@ -65,71 +65,88 @@
        /// <summary> 
        /// åˆ›å»ºä½œä¸šè®¡åˆ’表 
        /// </summary> 
        /// <param name="input">输入.</param>
        /// <param name="input">创建参数</param>
        /// <returns></returns> 
        [Authorize]
        [HttpPost]
        public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
        {
            input.CreatorName = _currentUser.UserAccount;//创建人
            return _workPlanAppService.CreateAsync(input);
        }
        /// <summary> 
        /// æ›´æ–°ä½œä¸šè®¡åˆ’表 
        /// </summary> 
        /// <param name="id">标识符.</param>
        /// <param name="input">输入.</param>
        /// <param name="id">主键ID</param>
        /// <param name="input">更新参数</param>
        /// <returns></returns> 
        [Authorize]
        [HttpPut]
        [Route("{id}")]
        public virtual Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input)
        {
            input.LastModifierName = _currentUser.UserAccount;//修改人
            return _workPlanAppService.UpdateAsync(id, input);
        }
        /// <summary> 
        /// å…‹éš†ä½œä¸šè®¡åˆ’表 
        /// </summary> 
        /// <param name="ids">Id集合.</param>
        /// <param name="ids">Id集合</param>
        /// <returns></returns> 
        [Authorize]
        [HttpPost]
        [Route("Clone")]
        public virtual Task<List<WorkPlanDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
        {
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            return _workPlanAppService.CloneAsync(ids);
        }
        /// <summary> 
        /// åˆ é™¤ä½œä¸šè®¡åˆ’表 
        /// </summary> 
        /// <param name="id">标识符.</param>
        /// <param name="id">主键ID</param>
        /// <returns></returns> 
        [Authorize]
        [HttpDelete]
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            return _workPlanAppService.DeleteAsync(id);
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            return _workPlanAppService.DeleteAsync(id);//逻辑删除
        }
        /// <summary> 
        /// æ‰¹é‡åˆ é™¤ä½œä¸šè®¡åˆ’表 
        /// </summary> 
        /// <param name="ids">The ids.</param>
        /// <param name="ids">主键ID集合</param>
        /// <returns></returns> 
        [Authorize]
        [HttpDelete]
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _workPlanAppService.DeleteManyAsync(ids);
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            return _workPlanAppService.DeleteManyAsync(ids);//逻辑删除
        }
        /// <summary> 
        /// è°ƒæ•´æŽ’序作业计划表 
        /// </summary> 
        /// <param name="id">标识符.</param>
        /// <param name="id">主键ID</param>
        /// <returns></returns> 
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
@@ -151,14 +168,6 @@
            await file.CopyToAsync(stream);
            stream.Seek(0L, SeekOrigin.Begin);
            var userAccount = _currentUser.UserAccount;
            var userId = _currentUser.UserId;
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            var sheetNames = stream.GetSheetNames();
            var workPlanRows = sheetNames.Contains("配置") ? MiniExcel.Query<WorkPlansImportModel.WorkPlanImportModel>(stream, sheetName: "配置").ToList() : new();
@@ -167,10 +176,15 @@
                throw new UserFriendlyException("请检查导入的表格");
            }
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            await _workPlanAppService.ImportAsync(new WorkPlansImportModel
            {
                WorkPlans = workPlanRows,
            }, userId, userAccount);
            }, myCurrentUser);
            return Ok();
        }
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -332,7 +332,7 @@
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    ////TODO:暂时生成产品ID
@@ -377,6 +377,8 @@
                            pipeSpecCode3 = new_workPlanList[i].PipeSpecCode;
                        }
                    }
                    //获取 æ‰¹æ¬¡
                    await callMaterialOrderAppService.wh
                    Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?>
                    {
                        { "打码工件1",code1},
@@ -388,7 +390,8 @@
                        { "打码管段编码", new_workPlanList.First().PipeSpecCode },
                        { "打码管段名称", new_workPlanList.First().PipeSectionName },
                        { "打码原料管型号", new_workPlanList.First().MaterialMode },
                        { "打码原料标识", new_workPlanList.First().DataIdentifier }
                        { "打码原料标识", new_workPlanList.First().DataIdentifier },
                        { "打码原料管批次", new_workPlanList.First() },
                    };
                    _variableService.WriteValueAsync(keyValuePairs);
@@ -450,7 +453,7 @@
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    //TODO:暂时生成产品ID
@@ -603,7 +606,7 @@
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    ////TODO:暂时生成产品ID
@@ -721,7 +724,7 @@
                    //根据原料标识寻找 ä½œä¸šè®¡åˆ’
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    //TODO:暂时生成产品ID
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Resources/Templates/WorkPlanµ¼³öÄ£°å.xlsx
Binary files differ