zs
2025-05-15 edba4ede85a3d82a7f0a0a7dccddbc8281862888
添加物料类型
已添加37个文件
已修改21个文件
已删除1个文件
5946 ■■■■■ 文件已修改
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialType.ts 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialTypeDrawer.tsx 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialTypeQueryDrawer.tsx 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialType.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialTypeDrawer.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialTypeQueryDrawer.ts 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialType.ts 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialTypeDrawer.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialTypeQueryDrawer.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/HIAWms.tsx 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeDrawer/WmsMaterialTypeDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeDrawer/WmsMaterialTypeDrawer.tsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeQueryDrawer/WmsMaterialTypeQueryDrawer.module.scss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeQueryDrawer/WmsMaterialTypeQueryDrawer.tsx 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/Config.ts 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.module.scss 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.tsx 376 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Views/config/WmsMaterialType.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/enum.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/ExportWmsMaterialModel.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/GetWmsMaterialTypeInput.cs 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeCreateDto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeCreateOrUpdateDtoBase.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeDto.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeExportModel.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeUpdateDto.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypesImportModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialTypeAppService.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialTypeAppService.cs 455 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialTypeAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/MaterialType/WmsMaterialType.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialType/IWmsMaterialTypeRepository.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsTask/IWmsTaskRepository.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialType.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialTypeRepository.cs 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsTaskRepository.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250515034921_InitialCreate17.Designer.cs 1909 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250515034921_InitialCreate17.cs 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialTypeController.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialType导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/File/GenerateCodeConfigParamFiles/物料类型配置.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialType.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,275 @@
import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialType } from '../Models/WmsMaterialType'
import { ElMessage } from 'element-plus'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { useFile } from './File'
interface CurrentType {
  row: any
  index: number
}
export const useWmsMaterialType = (props: any, ctx?: any) => {
  const wmsMaterialType = injectModel<WmsMaterialType>('wmsMaterialType')
  const { exportFile } = useFile()
  /**
   * å¤´éƒ¨é…ç½®
   */
  const headers = ref({})
  /**
   * åŠ¨æ€åˆ—é…ç½®
   */
  const wmsMaterialTypeColumns = ref<Record<string, any>>([])
  /**
   * æœç´¢å€¼
   */
  const search = ref('')
  /**
   * æŽ’序
   */
  const sort = ref(0)
  /**
   * é€‰æ‹©é¡¹
   */
  const selection = ref([])
  /**
   * å½“前选中的行
   */
  const current = ref<any>(null)
  /**
   * æ•°æ®æº
   */
  const dataSource: Ref<any[]> = ref([])
  /**
   * è¡¨æ ¼
   */
  const tableRef = ref()
  const dialogConfig = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogConfigForQuery = reactive({
    visible: false,
    title: '',
    isAdd: false,
  })
  const dialogSettingConfig = reactive({
    visible: false,
    title: '',
  })
  /**
   * åˆ†é¡µæ•°æ®
   */
  const paginationParams = ref({})
  /**
   * æ‰“开详情
   * @param row
   */
  const openDetail = (row: any) => {
    current.value = row
    dialogConfig.visible = true
    dialogConfig.title = row.name
    dialogConfig.isAdd = false
    sort.value = row.sort
  }
  const contextMenu = [
    {
      label: '展开详情',
      fn: (c: CurrentType) => {
        current.value = null
        sort.value = c.row.sort
        nextTick(() => openDetail(c.row))
      },
      divided: true,
      icon: 'o',
    },
    // {
    //   label: '向上添加',
    //   fn: (c: CurrentType, pageNum: number) => {
    //     current.value = null
    //     sort.value = c.index + 1 + (pageNum - 1) * 50
    //     dialogConfig.visible = true
    //     dialogConfig.title = '添加'
    //     dialogConfig.isAdd = false
    //   },
    //   divided: true,
    //   icon: 'up',
    // },
    // {
    //   label: '向下添加',
    //   fn: (c: CurrentType, pageNum: number) => {
    //     current.value = null
    //     sort.value = c.index + 2 + (pageNum - 1) * 50
    //     dialogConfig.visible = true
    //     dialogConfig.title = '添加'
    //     dialogConfig.isAdd = false
    //   },
    //   divided: true,
    //   icon: 'down',
    // },
    // {
    //   label: '创建副本',
    //   fn: async ({ row }: CurrentType) => {
    //     await wmsMaterialType.cloneData([row.id])
    //     ElMessage.success('创建副本成功')
    //     tableRef.value?.getList()
    //   },
    //   divided: true,
    //   icon: 'copy',
    // },
    {
      label: '删除',
      fn: async (c: CurrentType) => {
        const names = selection.value.map((item: { materialTypeCode: string }) => item.materialTypeCode)
        ConfirmBox(
          `是否删除${names.length ? names.join(',') : c.row.materialTypeCode}`
        ).then(async () => {
          const ids = selection.value.map((item: { id: string }) => item.id)
          await wmsMaterialType.deleteWmsMaterialTypes(ids.length ? ids : [c.row.id])
          ElMessage.success('删除成功')
          tableRef.value.getList()
        })
      },
      icon: 'close',
    },
  ]
  const onCheck = (records: any) => {
    selection.value = records
  }
  const onAddWmsMaterialType = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfig.visible = true
    dialogConfig.isAdd = true
    dialogConfig.title = '添加'
    sort.value = params.totalCount + 1
  }
  //点击按钮【高级查询】
  const onAdvancedQuery = () => {
    const params = tableRef.value?.getPaginationParams()
    current.value = null
    dialogConfigForQuery.visible = true
    dialogConfigForQuery.isAdd = true
    dialogConfigForQuery.title = '高级查询'
  }
  const onConfirmWmsMaterialType = async () => {
    dialogConfig.visible = false
    if (dialogConfig.isAdd) {
      tableRef.value?.scrollToRow({
        skip: true,
      })
    } else {
      await tableRef.value?.getList()
    }
  }
  /**
   * è¡Œç‚¹å‡»æ—¶æ›´æ–°current
   */
  const onRowClick = ({ row }: any) => {
    if (dialogConfig.visible && current.value) {
      current.value = row
    }
  }
  /**
   * å¯¼å‡º
   */
  const onExport = (data={}) => {
    //const params = tableRef.value?.getParams()
    exportFile('/api/v1/HIAWms/wmsMaterialType/export', data, '物料类型')
  }
  /**
   * å…³é”®å­—搜索
   */
  const onSearch = () => {
    tableRef.value?.getList({
      Filter: search.value,
    })
  }
  /**
   * é‡ç½®è¡¨æ ¼æ•°æ®
   */
  const reloadList = () => {
    tableRef.value?.getList()
  }
  /**
   * ä¸Šä¼ æˆåŠŸ
   */
  const onSuccess = () => {
    tableRef.value?.getList()
    ElMessage.success('导入成功')
  }
  /**
   * å¤±è´¥
   * @param err
   */
  const onError = (err: any) => {
    try {
      const message = JSON.parse(err.message)
      ElMessage.error(message.msg)
    } catch (error) {
      ElMessage.error('导入失败')
    }
  }
  /**
   * ä¸Šä¼ é’©å­
   */
  const onBeforeUpload = (file: File) => {
    const format = ['xlsx', 'xls', 'csv']
    if (!format.includes(file.name.split('.')[1])) {
      ElMessage.error('导入文件格式不正确,请导入.xlsx/.xls与.csv格式的文件')
      return false
    }
    return true
  }
  onMounted(() => {
    headers.value = {
      Authorization: `Bearer ${sessionStorage.getItem('Token')}`,
      'X-Project': sessionStorage.getItem('X-Project'),
    }
  })
  ctx.expose({
    reloadList,
  })
  return {
    dataSource,
    contextMenu,
    dialogConfig,
    dialogConfigForQuery,
    dialogSettingConfig,
    tableRef,
    current,
    search,
    sort,
    wmsMaterialTypeColumns,
    paginationParams,
    headers,
    onBeforeUpload,
    onError,
    onSuccess,
    openDetail,
    onSearch,
    onExport,
    onRowClick,
    onConfirmWmsMaterialType,
    onCheck,
    onAddWmsMaterialType,
    onAdvancedQuery
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialTypeDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,212 @@
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialTypeDrawer } from '../Models/WmsMaterialTypeDrawer'
import { ElMessage } from 'element-plus'
import isEqual from 'lodash/isEqual'
import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
import { cloneDeep } from 'lodash'
// å¼•入公共选项配置
import {
  BOOLEAN_OPTIONS_AddEdit
} from '@/utils/commonOptionConstants';
export const useWmsMaterialTypeDrawer = (props: any, ctx?: any) => {
  const wmsMaterialTypeDrawer = injectModel<WmsMaterialTypeDrawer>('wmsMaterialTypeDrawer')
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  const initiateData: Ref<Record<string, any>> = ref({})
  const formData = ref<Record<string, any>>({})
  // ref
  const formRef = ref()
  const disabled = ref(false)
  const current = computed(() => {
    return props.row || null
  })
  const datePicker = (attrs) => {
    return (
      <el-date-picker
        type="date"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-date-picker>
    )
  }
  const inputNumber = (attrs) => {
    return (
      <el-input-number
        min="1"
        step="1"
        precision="0"
        {...attrs}
      ></el-input-number>
    )
  }
  const dateTimePicker = (attrs) => {
    return (
      <el-date-picker
        type="datetime"
        format="YYYY-MM-DD HH:mm:ss"
        formatValue="YYYY-MM-DD HH:mm:ss"
        {...attrs}
      ></el-date-picker>
    )
  }
  const visible = computed({
    get() {
      return props.modelValue
    },
    set(val) {
      ctx.emit('update:modelValue', val)
    },
  })
  /**
   * æ·»åŠ çš„form字段
   */
  const formItems = reactive([
                    {
                   label: '类型描述',
                   prop: 'materialTypeDesc',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入类型描述',
              rules: [{required: true, message: '类型描述不能为空', trigger: 'blur' }],
                },
                {
                   label: '类型编码',
                   prop: 'materialTypeCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入类型编码',
              rules: [{required: true, message: '类型编码不能为空', trigger: 'blur' }],
                },
                {
                   label: '备注',
                   prop: 'remark',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入备注',
                },
  ])
  /**
   * æ ¡éªŒæ˜¯å¦æœ‰æ•°æ®å˜åŒ–
   */
  const checkIsEqualObject = () => {
    const data = {
      formData: formData.value,
    }
    const check = isEqual(initiateData.value, data)
    return check
  }
  const onClose = (done: () => void) => {
    if (visible.value) {
      if (checkIsEqualObject()) {
        visible.value = false
        done && done()
      } else {
        ConfirmBox('是否保存设置?')
          .then(() => {
            onConfirm()
          })
          .catch(() => {
            visible.value = false
            done && done()
          })
      }
    }
  }
  /**
   * ä¿å­˜
   */
  const onConfirm = async () => {
    await formRef.value?.validate()
    const data = {
      materialTypeDesc: formData.value.materialTypeDesc,
materialTypeCode: formData.value.materialTypeCode,
remark: formData.value.remark,
    }
    if (!current.value) {
      await wmsMaterialTypeDrawer.addWmsMaterialType(data)
    } else {
      const id = current.value.id
      await wmsMaterialTypeDrawer.updateWmsMaterialType(id, data)
    }
    ElMessage.success('保存成功')
    ctx.emit('confirm')
  }
  const updateCheckData = () => {
    initiateData.value = {
      formData: {
        ...formData.value,
      },
    }
  }
  const updateFormItemOptions = (propName: string, enumData: any[]) => {
    const item = formItems.find((item) => item.prop === propName)
    if (item && enumData) {
      item.options = enumData.map((item) => ({
        label: item.description,
        value: item.value,
      }))
    }
  }
  /**
   * é€šç”¨æŸ¥è¯¢æžšä¸¾
   */
  const commonQueryEnumForFrom = async () => {
  }
  commonQueryEnumForFrom()
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    if (current.value) {
      const res = await wmsMaterialTypeDrawer.getWmsMaterialTypeDetail(current.value)
      formData.value = {
        materialTypeDesc: res.materialTypeDesc,
materialTypeCode: res.materialTypeCode,
remark: res.remark,
        id: res.id,
      }
      disabled.value = true
      updateCheckData()
    } else {
      formData.value = {}
      disabled.value = false
      updateCheckData()
    }
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirm,
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Controllers/WmsMaterialTypeQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,298 @@
import {
  ref,
  onMounted,
  reactive,
  computed,
  Ref,
  watch,
  SetupContext,
  h,
} from 'vue'
import { injectModel } from '@/libs/Provider/Provider'
import { WmsMaterialTypeDrawer } from '../Models/WmsMaterialTypeDrawer'
import { ElMessage } from 'element-plus'
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 useWmsMaterialTypeQueryDrawer = (props: any, ctx?: any) => {
  const wmsMaterialTypeDrawer = injectModel<WmsMaterialTypeDrawer>('WmsMaterialTypeDrawer')
  /**
   * ç”¨æ¥å¯¹æ¯”的初始化数据
   */
  const initiateData: Ref<Record<string, any>> = ref({})
  const formData = ref<Record<string, any>>({})
  // ref
  const formRef = ref()
  const disabled = ref(false)
  const current = computed(() => {
    return props.row || null
  })
  const inputNumber = (attrs) => {
    return (
      <el-input-number
        min="1"
        step="1"
        precision="0"
        {...attrs}
      ></el-input-number>
    )
  }
    const datePickerRange = (attrs) => {
    return (
      <el-date-picker
        type="daterange"
        value-format="YYYY-MM-DD HH:mm:ss"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        {...attrs}
      ></el-date-picker>
    )
  }
  const dateTimePickerRange = (attrs) => {
    return (
      <el-date-picker
        type="datetimerange"
        value-format="YYYY-MM-DD HH:mm:ss"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        {...attrs}
      ></el-date-picker>
    )
  }
  const visible = computed({
    get() {
      return props.modelValue
    },
    set(val) {
      ctx.emit('update:modelValue', val)
    },
  })
  /**
   * é«˜çº§æŸ¥è¯¢çš„form字段
   */
  const formItems = reactive([
                    {
                   label: '类型描述',
                   prop: 'materialTypeDesc',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入类型描述',
                   highSelectAttrs:{
                     prop: 'materialTypeDesc_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '类型编码',
                   prop: 'materialTypeCode',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入类型编码',
                   highSelectAttrs:{
                     prop: 'materialTypeCode_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '创建时间',
                   prop: 'creationTime',
                   el: (props: any, { attrs }: SetupContext) => {
                     return h(dateTimePickerRange, {
                       ...props,
                       clearable: true,
                       ...attrs,
                     })
                   },
                   width: '100%',
                   //disabled: disabled,
                   placeholder: '请输入创建时间',
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                },
                {
                   label: '最后修改时间',
                   prop: 'lastModificationTime',
                   el: (props: any, { attrs }: SetupContext) => {
                     return h(dateTimePickerRange, {
                       ...props,
                       clearable: true,
                       ...attrs,
                     })
                   },
                   width: '100%',
                   //disabled: disabled,
                   placeholder: '请输入最后修改时间',
                   isDateControl: true, // æ˜¾å¼æ ‡è®°ä¸ºæ—¥æœŸæŽ§ä»¶
                },
                {
                   label: '',
                   prop: 'creatorName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入',
                   highSelectAttrs:{
                     prop: 'creatorName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '',
                   prop: 'lastModifierName',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入',
                   highSelectAttrs:{
                     prop: 'lastModifierName_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
                {
                   label: '备注',
                   prop: 'remark',
                   el: 'input',
                   //disabled: disabled,
                   placeholder: '请输入备注',
                   highSelectAttrs:{
                     prop: 'remark_FilterMode',
                     el: 'select',
                     placeholder: '请选择',
                     options:FILTER_MODE_OPTIONS_STRING
                   }
                },
  ])
  /**
   * æ ¡éªŒæ˜¯å¦æœ‰æ•°æ®å˜åŒ–
   */
  const checkIsEqualObject = () => {
    const data = {
      formData: formData.value,
    }
    const check = isEqual(initiateData.value, data)
    return check
  }
  const commonGetFormData=()=>{
    const data = {
      materialTypeDesc: formData.value.materialTypeDesc || '',
materialTypeDesc_FilterMode: formData.value.materialTypeDesc_FilterMode || '',
materialTypeCode: formData.value.materialTypeCode || '',
materialTypeCode_FilterMode: formData.value.materialTypeCode_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();
      ctx.emit('close', data)
    }
  }
  /**
   * ç¡®è®¤æŸ¥è¯¢
   */
  const onConfirmQuery = async () => {
    const data =commonGetFormData();
    ctx.emit('confirmQuery', data)
  }
  /**
   * é‡ç½®å…¬å…±select查询
   */
  const onResetForHighSelect = async () => {
    formData.value.materialTypeDesc_FilterMode = 1
formData.value.materialTypeCode_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.materialTypeDesc = ''
formData.value.materialTypeCode = ''
formData.value.creationTime = ''
formData.value.lastModificationTime = ''
formData.value.creatorName = ''
formData.value.lastModifierName = ''
formData.value.remark = ''
    //向父组件发送自定义事件
    ctx.emit('restQuery');
  }
  const updateCheckData = () => {
    initiateData.value = {
      formData: {
        ...formData.value,
      },
    }
  }
  const updateFormItemOptions = (propName: string, enumData: any[]) => {
    const item = formItems.find((item) => item.prop === propName)
    if (item && enumData) {
      item.options = enumData.map((item) => ({
        label: item.description,
        value: item.value,
      }))
    }
  }
  /**
   * é€šç”¨æŸ¥è¯¢æžšä¸¾
   */
  const commonQueryEnumForFrom = async () => {
  }
  commonQueryEnumForFrom()
  onResetForHighSelect();//重置公共select查询
  /**
   * å¼¹çª—打开获取详情
   */
  const onOpen = async () => {
    disabled.value = false
    updateCheckData()
  }
  watch(() => current.value, onOpen)
  return {
    formItems,
    formData,
    visible,
    formRef,
    onOpen,
    onClose,
    onConfirmQuery,
    onReset,
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialType.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsMaterialType = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialType', data)
}
/**
 * æ‰¹é‡åˆ é™¤
 * @returns
 */
export const deleteWmsMaterialTypes = (ids: string[]) => {
  return request({
    data: ids,
    url: '/api/v1/HIAWms/wmsMaterialType',
    method: 'delete',
  })
}
/**
 * å…‹éš†
 * @returns
 */
export const cloneData = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialType/clone', data)
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialTypeDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsMaterialType = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialType', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsMaterialType = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsMaterialType/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsMaterialType = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsMaterialType/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data)
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/Service/WmsMaterialTypeQueryDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
import { Base } from '@/libs/Base/Base'
const request = Base.request
/**
 * æ·»åŠ 
 * @returns
 */
export const addWmsMaterialType = (data: any) => {
  return request.post('/api/v1/HIAWms/wmsMaterialType', data)
}
/**
 * èŽ·å–è¯¦æƒ…
 * @returns
 */
export const getWmsMaterialType = (id: string) => {
  return request.get(`/api/v1/HIAWms/wmsMaterialType/${id}`)
}
/**
 * æ›´æ–°
 * @returns
 */
export const updateWmsMaterialType = (id: string, data: Record<string, any>) => {
  return request.put(`/api/v1/HIAWms/wmsMaterialType/${id}`, data)
}
/**
 * èŽ·å–æžšä¸¾
 * @returns
 */
export const getWmsEnumData = (data: any) => {
  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data)
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialType.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
import { Base } from '@/libs/Base/Base'
import {
  deleteWmsMaterialTypes,
  addWmsMaterialType,
  cloneData,
} from './Service/WmsMaterialType'
export class WmsMaterialType extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
    })
  }
  onMounted() {}
  /**
   * åˆ é™¤
   * @param id
   * @returns
   */
  async deleteWmsMaterialTypes(ids: string[]) {
    return deleteWmsMaterialTypes(ids)
  }
  /**
   * æ·»åŠ æ•°æ®
   * @param data
   * @returns
   */
  addWmsMaterialType(data: Record<string, any>) {
    return addWmsMaterialType(data)
  }
  /**
   * å…‹éš†
   * @param ids
   * @returns
   */
  cloneData(ids: string[]) {
    return cloneData(ids)
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialTypeDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsMaterialType,
  getWmsMaterialType,
  updateWmsMaterialType,
  getWmsEnumData,
} from './Service/WmsMaterialTypeDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsMaterialTypeDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsMaterialType: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsMaterialType(data: Record<string, any>) {
    return addWmsMaterialType(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsMaterialType(id: string, data: Record<string, any>) {
    return updateWmsMaterialType(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsMaterialTypeDetail(current: any, id?: string) {
    return getWmsMaterialType(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Models/WmsMaterialTypeQueryDrawer.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import { Base } from '@/libs/Base/Base'
import {
  addWmsMaterialType,
  getWmsMaterialType,
  updateWmsMaterialType,
  getWmsEnumData,
} from './Service/WmsMaterialTypeQueryDrawer'
import { useGlobalState } from '@/libs/Store/Store'
export class WmsMaterialTypeQueryDrawer extends Base<{ [key: string]: any }> {
  constructor() {
    super({
      data: [],
      wmsMaterialType: {},
    })
  }
  /**
   * æ·»åŠ 
   * @param data
   */
  async addWmsMaterialType(data: Record<string, any>) {
    return addWmsMaterialType(data)
  }
  /**
   * æ›´æ–°
   * @param data
   */
  async updateWmsMaterialType(id: string, data: Record<string, any>) {
    return updateWmsMaterialType(id, data)
  }
  /**
   * èŽ·å–è¯¦æƒ…
   */
  async getWmsMaterialTypeDetail(current: any, id?: string) {
    return getWmsMaterialType(id || current?.id)
  }
  //  èŽ·å–æžšä¸¾å€¼
  async getWmsEnumData(data: Record<string, any>) {
    return getWmsEnumData(data)
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Views/HIAWms.tsx
@@ -23,7 +23,10 @@
const entityNames = getEntityNames(Models)
const nameToLabelMap = [{ name: 'WmsMaterial', label: '物料基础' }]
const nameToLabelMap = [
  { name: 'WmsMaterial', label: '物料基础' },
    { name: 'WmsMaterialType', label: '物料类型' },
]
export default defineComponent({
  name: 'HIAWms',
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeDrawer/WmsMaterialTypeDrawer.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
.drawer {
  width: 800px;
}
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeDrawer/WmsMaterialTypeDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
import { SetupContext, defineComponent } from 'vue'
import BaseDrawer from '@/components/BaseDrawer/BaseDrawer'
import styles from './WmsMaterialTypeDrawer.module.scss'
import { useWmsMaterialTypeDrawer } from '../../../../Controllers/WmsMaterialTypeDrawer.tsx'
import DyForm from '@/components/DyForm/DyForm'
// @ts-ignore
export default defineComponent<{
  [key: string]: any
}>({
  name: '弹窗',
  props: {
    modelValue: {
      type: Boolean,
      default: false,
    },
    title: {
      type: String,
      default: '',
    },
    row: {
      type: Object,
    },
    sort: {
      type: Number,
      default: 0,
    },
  },
  emits: ['update:modelValue', 'close', 'submit', 'confirm'],
  setup(props: Record<string, any>, ctx: SetupContext) {
    const {
      onClose,
      onConfirm,
      onOpen,
      formRef,
      visible,
      formItems,
      formData,
    } = useWmsMaterialTypeDrawer(props, ctx)
    return () => (
      <BaseDrawer
        class={styles.drawer}
        size="800px"
        title={props.title || '添加'}
        v-model={visible.value}
        close-on-click-modal={true}
        onConfirm={onConfirm}
        onOpen={onOpen}
        before-close={onClose}
        onClose={onClose}
      >
        <DyForm
          ref={formRef}
          formData={formData.value}
          labelWidth="106px"
          formItemProps={formItems}
        ></DyForm>
      </BaseDrawer>
    )
  },
})
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeQueryDrawer/WmsMaterialTypeQueryDrawer.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
.drawer {
  width: 800px;
}
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/Dialog/WmsMaterialTypeQueryDrawer/WmsMaterialTypeQueryDrawer.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
/*
 * ç‰©æ–™åŸºç¡€ä¿¡æ¯æŸ¥è¯¢å¼¹å‡ºæ¡†
*/
import { SetupContext, defineComponent } from 'vue'
import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer'
import styles from './WmsMaterialTypeQueryDrawer.module.scss'
import { useWmsMaterialTypeQueryDrawer } from '../../../../Controllers/WmsMaterialTypeQueryDrawer.tsx'
import DyFormForHighQuery from '@/components/DyFormForHighQuery/DyFormForHighQuery'
// @ts-ignore
export default defineComponent<{
  [key: string]: any
}>({
  name: '弹窗',
  props: {
    //枚举类型字典
    enumListDict:{
      type: Array as () => Array<{ key: string; value: object }>, // å®šä¹‰æ•°ç»„元素类型
      default: () => [] // é»˜è®¤å€¼
    },
    modelValue: {
      type: Boolean,
      default: false,
    },
    title: {
      type: String,
      default: '',
    },
    row: {
      type: Object,
    },
    sort: {
      type: Number,
      default: 0,
    },
  },
  emits: ['update:modelValue', 'close', 'submit', 'confirmquery1'],
  setup(props: Record<string, any>, ctx: SetupContext) {
    const {
      onClose,
      onConfirmQuery,
      onOpen,
      onReset,
      formRef,
      visible,
      formItems,
      formData,
    } = useWmsMaterialTypeQueryDrawer(props, ctx)
    return () => (
      <BaseQueryDrawer
        class={styles.drawer}
        size="800px"
        title={props.title || '高级查询'}
        v-model={visible.value}
        close-on-click-modal={true}
        onReset={onReset}
        onConfirmQueryForBase={onConfirmQuery}
        onOpen={onOpen}
        before-close={onClose}
        onClose={onClose}
      >
        <DyFormForHighQuery
          ref={formRef}
          formData={formData.value}
          labelWidth="106px"
          formItemProps={formItems}
        ></DyFormForHighQuery>
      </BaseQueryDrawer>
    )
  },
})
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/Config.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
export const columns = [
  {
    type: 'seq',
    width: 60,
    title: '序号',
  },
  {
  field: 'materialTypeDesc',
  title: '类型描述',
  width:160,
},
{
  field: 'materialTypeCode',
  title: '类型编码',
  width:160,
},
{
  field: 'creationTime',
  title: '创建时间',
  width:180,
},
{
  field: 'lastModificationTime',
  title: '最后修改时间',
  width:180,
},
{
  field: 'creatorName',
  title: '',
  width:160,
},
{
  field: 'lastModifierName',
  title: '',
  width:160,
},
{
  field: 'remark',
  title: '备注',
  width:160,
},
]
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.module.scss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
.wmsMaterialTypeContent {
  width: 100%;
  height: 100%;
  .wmsMaterialTypeList {
    width: 100%;
    height: calc(100% - 70px);
  }
  .headerContent {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 43px;
  }
  .header {
    margin-bottom: 12px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
  }
}
.tagBox {
  width: auto;
  min-width: 80px;
  height: 24px;
  background: #ffffff;
  border-radius: 19px 19px 19px 19px;
  opacity: 1;
  border: 1px dashed #bcc4cc;
  width: 50px;
  height: 20px;
  font-size: 14px;
  font-family: PingFang SC, PingFang SC;
  font-weight: 400;
  color: #5a84ff;
  display: flex;
  justify-content: center;
  align-items: center;
  // cursor: pointer;
}
.group {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.groupTable {
  width: 100%;
}
.overBox {
  width: 100%;
  height: calc(100% - 20px);
  overflow: auto;
  :global(.cs-collapse-item__header) {
    background-color: #f1f1f1;
    padding: 0 20px;
    height: 35px;
    font-size: 16px;
    font-family: PingFang SC, PingFang SC;
    font-weight: 500;
  }
  :global(.cs-collapse-item__content) {
    padding-bottom: 0px;
  }
}
.groupHeader {
  width: 100%;
  height: 30px;
  background: #ccc;
}
.hideBlock {
  display: none;
}
.queryForm {
  padding: 10px;
  background: #f5f7fa;
  margin-bottom: 0px;
  border-radius: 4px;
  .el-form-item {
    margin-right: 20px;
    margin-bottom: 0;
    // ç»Ÿä¸€è¾“入框和选择框的宽度
    .el-input, .el-select {
      width: 200px; // è®¾ç½®ç»Ÿä¸€çš„宽度
    }
    // é€‰æ‹©æ¡†å†…部输入框样式
    .el-select .el-input__wrapper {
      height: 32px; // ä¸Žè¾“入框高度一致
      padding: 1px 11px; // ä¸Žè¾“入框内边距一致
    }
    // æ—¥æœŸé€‰æ‹©å™¨å®½åº¦
    .el-date-editor {
      width: 220px;
    }
  }
}
// å¦‚果需要更精确的控制,可以单独设置
.formItem {
  width: 200px;
  &.el-input, &.el-select {
    width: 100%;
  }
}
HIAWms/hiawms_web/src/widgets/HIAWms/Views/Pages/WmsMaterialType/WmsMaterialType.tsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,376 @@
import { computed, defineComponent, onMounted, reactive, ref } from 'vue'
import type { Ref } from 'vue'
import BaseTable from '@/components/Table/Table'
import styles from './WmsMaterialType.module.scss'
import { useWmsMaterialType } from '../../../Controllers/WmsMaterialType'
import IconButton from '@/components/IconButton/IconButton'
import WmsMaterialTypeDrawer from '../Dialog/WmsMaterialTypeDrawer/WmsMaterialTypeDrawer'
import WmsMaterialTypeQueryDrawer from '../Dialog/WmsMaterialTypeQueryDrawer/WmsMaterialTypeQueryDrawer'
import Search from '@/components/Search/Search'
import { columns } from './Config'
import TdButton from '@/components/TdButton/TdButton'
import { vPermission } from '@/libs/Permission/Permission'
import dayjs from 'dayjs'
import {
  getWmsEnumData
} from '@/widgets/WmsMaterialType/Models/Service/WmsMaterialTypeDrawer'
import {
  ElInput,
  ElSelect,
  ElOption,
  ElDatePicker,
  ElForm,
  ElFormItem,
} from 'element-plus'
import { injectModel } from '@/libs/Provider/Provider'
// å¼•入公共选项配置
import {
  FILTER_MODE_OPTIONS_STRING
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
interface RenderTableType {
  url?: string
  dataSource: Ref<any[]>
  isDrag?: boolean
  isChecked?: boolean
  isHidePagination?: boolean
  params?: Record<string, any>
  autoHeight?: boolean
}
export default defineComponent({
  name: 'WmsMaterialType',
  directives: {
    permission: vPermission,
  },
  setup(props, ctx) {
    const {
      dataSource,
      contextMenu,
      dialogConfig,
      dialogConfigForQuery,
      tableRef,
      current,
      search,
      sort,
      headers,
      onError,
      onSearch,
      onRowClick,
      onConfirmWmsMaterialType,
      onCheck,
      onAddWmsMaterialType,
      onAdvancedQuery,
      onExport,
      openDetail,
      onSuccess,
      onBeforeUpload,
    } = useWmsMaterialType(props, ctx)
    //定义高级查询引用
   const wmsMaterialTypeQueryDrawerRef=ref(null);
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    })
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题)
    const _searchFormInputAttrs = ref([
     'MaterialTypeCode', 'MaterialTypeDesc',
    ]);
    const searchFormInputAttrs_Placeholder = ref('请输入物料类型编号/物料类型名称');
    // åŠ¨æ€æžšä¸¾é€‰é¡¹
    const enumOptions = reactive({
    })
    // èŽ·å–æžšä¸¾æ•°æ®
    const fetchEnumData = async () => {
      try {
      } catch (error) {
        console.error('获取枚举数据失败:', error)
      }
    }
    // å®šä¹‰å“åº”式查询数据
    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 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)
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】)
    const handleQuery = async (extraParams = {}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      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;
    }
     //新版的导出方法
     const handleExport=()=>{
      onExport(_curHighQueryData.value);
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•
    const closeQuery = (extraParams={}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
    }
    //保存查询值
    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 è¡¨æ ¼
     */
    const RenderBaseTable = (props: RenderTableType) => {
      const {
        url,
        dataSource,
        isDrag,
        isChecked,
        isHidePagination,
        params,
        autoHeight,
      } = props
      return (
        <div
          class={{
            [styles.wmsMaterialTypeList]: true,
          }}
        >
          <BaseTable
            ref={tableRef}
            url={url}
            sortUrlTpl="/api/v1/HIAWms/wmsMaterialType/{id}/adjustsort/{sort}"
            v-model:dataSource={dataSource.value}
            columns={columns}
            contextMenu={contextMenu}
            params={params}
            isDrag={isDrag}
            isChecked={isChecked}
            autoHeight={autoHeight}
            onCheck={onCheck}
            onRowClick={onRowClick}
            isHidePagination={isHidePagination}
            pageSize={20}
            v-slots={{
              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 (
        <div class={styles.wmsMaterialTypeContent}>
          {/* æ·»åŠ /编辑 */}
          <WmsMaterialTypeDrawer
            v-model={dialogConfig.visible}
            title={dialogConfig.title}
            row={current.value}
            sort={sort.value}
            onConfirm={onConfirmWmsMaterialType}
          />
          {/* é«˜çº§æŸ¥è¯¢ */}
          <WmsMaterialTypeQueryDrawer
            ref="wmsMaterialTypeQueryDrawerRef"
            v-model={dialogConfigForQuery.visible}
            title={dialogConfigForQuery.title}
            row={current.value}
            sort={sort.value}
            onConfirmQuery={handleQuery}
            onRestQuery={resetQuery}
            onClose={closeQuery}
          />
          <div class={styles.headerContent}>
            <div class={styles.header}>
              <IconButton
                v-permission="wmsMaterialType-add"
                icon="add-p"
                onClick={onAddWmsMaterialType}
                type="primary"
              >
                æ·»åŠ 
              </IconButton>
              <el-divider direction="vertical" />
              <el-upload
                v-permission="wmsMaterialType-import"
                name="file"
                accept=".xlsx,.xls,.csv"
                show-file-list={false}
                onError={onError}
                onSuccess={onSuccess}
                before-upload={onBeforeUpload}
                headers={headers.value}
                action="/api/v1/HIAWms/wmsMaterialType/import"
              >
                <IconButton icon="in">导入</IconButton>
              </el-upload>
              <IconButton
                v-permission="wmsMaterialType-output"
                icon="out"
                onClick={handleExport}
              >
                å¯¼å‡º
              </IconButton>
            </div>
            <ElFormItem style={{ marginTop: '15px' }}>
              <ElFormItem label="关键字">
                 <el-tooltip
                  class="box-item"
                  effect="dark"
                  content={searchFormInputAttrs_Placeholder.value}
                  placement="top-start"
                >
                <ElInput
                  v-model={queryForm.value.searchVal}
                  placeholder={searchFormInputAttrs_Placeholder.value}
                  clearable
                  class={styles.formItem}
                />
                </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>
              {/* <IconButton style="" icon="refresh" onClick={resetQuery}>
                é‡ç½®
              </IconButton> */}
              <IconButton
                v-permission="wmsMaterialType-add"
                icon="search"
                onClick={onAdvancedQuery}
                type="primary"
              >
                é«˜çº§æŸ¥è¯¢
              </IconButton>
            </ElFormItem>
          </div>
          <RenderBaseTable
            url="/api/v1/HIAWms/wmsMaterialType/page"
            dataSource={dataSource}
            isChecked={true}
            isDrag={true}
          />
        </div>
      )
    }
  },
})
HIAWms/hiawms_web/src/widgets/HIAWms/Views/config/WmsMaterialType.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "name": "WmsMaterialType"
}
HIAWms/hiawms_web/src/widgets/HIAWms/enum.ts
@@ -12,4 +12,9 @@
  'wmsMaterial-add': '列表-添加',
  'wmsMaterial-import': '列表-导入',
  'wmsMaterial-output': '列表-输出',
  'wmsMaterialType-list': '列表-列表',
  'wmsMaterialType-add': '列表-添加',
  'wmsMaterialType-import': '列表-导入',
  'wmsMaterialType-output': '列表-输出',
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/ExportWmsMaterialModel.cs
ÎļþÒÑɾ³ý
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs
@@ -87,17 +87,27 @@
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        public MaterialTypeEnum?  MaterialType { get; set; }
        public string?  MaterialTypeCode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰-查询关系运算符 
        /// </summary>
        public SearchFilterModeEnum MaterialType_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        public SearchFilterModeEnum MaterialType_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)
        /// </summary>
        public string PrimaryUnit { get; set; }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    public string? MaterialTypeDesc { get; set; }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰-查询关系运算符
    /// </summary>
    public SearchFilterModeEnum MaterialTypeDesc_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)
    /// </summary>
    public string PrimaryUnit { get; set; }
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)-查询关系运算符 
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs
@@ -32,7 +32,7 @@
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        public MaterialTypeEnum MaterialType { get; set; }
        public string MaterialTypeCode { get; set; }
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs
@@ -45,18 +45,13 @@
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        public MaterialTypeEnum MaterialType { get; set; }
        public string MaterialTypeCode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        public string MaterialTypeDesc
        {
            get
            {
                return GetEnumDescriptionUtil.GetEnumDescription(MaterialType);
            }
        }
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)
        /// </summary>
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs
@@ -37,8 +37,14 @@
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    [ExcelColumn(Name = "物料类型(枚举值)", Width = 25)]
    public MaterialTypeEnum MaterialType { get; set; }
    [ExcelColumn(Name = "物料类型", Width = 25)]
    public string MaterialTypeCode { get; set; }
    /// <summary>
    /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
    /// </summary>
    [ExcelColumn(Name = "物料类型", Width = 25)]
    public string MaterialTypeDesc { get; set; }
    /// <summary>
    /// ä¸»å•位(如:kg、m、个)
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/GetWmsMaterialTypeInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,232 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CmsQueryExtensions.Extension;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息查询参数
/// </summary>
public class GetWmsMaterialTypeInput : ExtensiblePagedAndSortedResultRequestDto
{
    #region å…³é”®å­—查询
    /// <summary>
    /// å…³é”®å­—模糊查询(注意是小写!)
    /// </summary>
    public string searchVal { get; set; }
    /// <summary>
    /// é€šç”¨æŸ¥è¯¢é…ç½® (1:模糊查询 , 2:精准查询)(注意是小写!)
    /// </summary>
    public SearchFilterModeEnum searchVal_FilterMode { get; set; } = SearchFilterModeEnum.模糊查询;
    /// <summary>
    /// å­æœç´¢ç»„件传递的通用查询配置的属性名(注意是小写!)
    /// </summary>
    [NoAutoQuery]
    public string str_searchFormInputAttrs { get; set; }
    /// <summary>
    /// å­æœç´¢ç»„件传递的通用查询配置的属性名(注意是小写!)
    /// </summary>
    public List<string> searchFormInputAttrs
    {
        get
        {
            if (!string.IsNullOrEmpty(str_searchFormInputAttrs))
            {
                return str_searchFormInputAttrs.Split(',').ToList();
            }
            return new List<string>();
        }
    }
    #endregion
            /// <summary>
        /// ç±»åž‹æè¿°
        /// </summary>
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ç±»åž‹æè¿°-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialTypeDesc_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// ç±»åž‹ç¼–码
        /// </summary>
        public string MaterialTypeCode { get; set; }
        /// <summary>
        /// ç±»åž‹ç¼–码-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum MaterialTypeCode_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public string CreationTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººID
        /// </summary>
        public string CreatorId { get; set; }
        /// <summary>
        /// åˆ›å»ºäººID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æœ€åŽä¿®æ”¹æ—¶é—´
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public string LastModificationTime { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹äººID
        /// </summary>
        public string LastModifierId { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹äººID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// æ˜¯å¦å·²åˆ é™¤
        /// </summary>
        public bool?  IsDeleted { get; set; }
        /// <summary>
        /// æ˜¯å¦å·²åˆ é™¤-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// åˆ é™¤äººID
        /// </summary>
        public string DeleterId { get; set; }
        /// <summary>
        /// åˆ é™¤äººID-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        //表示是 é«˜çº§æŸ¥è¯¢èŒƒå›´æŸ¥è¯¢ç‰¹æ€§
        [HighSearchRangeAttribute]
        public string DeletionTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string CreatorName { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum CreatorName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public string LastModifierName { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum LastModifierName_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public string OperationRemark { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum OperationRemark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public string DeleteRemark { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum DeleteRemark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public int?  Sort { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Sort_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        /// å¤‡æ³¨-查询关系运算符
        /// </summary>
        public SearchFilterModeEnum Remark_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public bool?  IsDisabled { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.精准查询;
        /// <summary>
        ///
        /// </summary>
        public string ExtraField1 { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ExtraField1_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public string ExtraField2 { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ExtraField2_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
        /// <summary>
        ///
        /// </summary>
        public string ExtraField3 { get; set; }
        /// <summary>
        /// -查询关系运算符
        /// </summary>
        public SearchFilterModeEnum ExtraField3_FilterMode { get; set; }= SearchFilterModeEnum.模糊查询;
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeCreateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息创建参数对象
/// </summary>
public class WmsMaterialTypeCreateDto : WmsMaterialTypeCreateOrUpdateDtoBase
{
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int? Sort { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public bool? IsDisabled { get; set; } = false;
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreatorName { get; set; }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeCreateOrUpdateDtoBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using System;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息创建或更新基类
/// </summary>
public abstract class WmsMaterialTypeCreateOrUpdateDtoBase : ExtensibleEntityDto
{
            /// <summary>
        /// ç±»åž‹æè¿°
        /// </summary>
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ç±»åž‹ç¼–码
        /// </summary>
        public string MaterialTypeCode { get; set; }
        /// <summary>
        /// åˆ›å»ºäººID
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹äººID
        /// </summary>
        public string? LastModifierId { get; set; }
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        public DateTime? DeletionTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? OperationRemark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? DeleteRemark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string? Remark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool? IsDisabled { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField1 { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField2 { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField3 { get; set; }
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialTypeCreateOrUpdateDtoBase"/> class.
    /// </summary>
    public WmsMaterialTypeCreateOrUpdateDtoBase() : base(false)
    {
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CmsQueryExtensions;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息数据参数对象
/// </summary>
public  class WmsMaterialTypeDto:  ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
            /// <summary>
        /// ç±»åž‹æè¿°
        /// </summary>
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ç±»åž‹ç¼–码
        /// </summary>
        public string MaterialTypeCode { get; set; }
        /// <summary>
        ///
        /// </summary>
        public ExtraPropertyDictionary? ExtraProperties { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ConcurrencyStamp { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public DateTime CreationTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººID
        /// </summary>
        public string? CreatorId { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹æ—¶é—´
        /// </summary>
        public DateTime? LastModificationTime { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹äººID
        /// </summary>
        public string? LastModifierId { get; set; }
        /// <summary>
        /// æ˜¯å¦å·²åˆ é™¤
        /// </summary>
        public bool IsDeleted { get; set; }
        /// <summary>
        /// åˆ é™¤äººID
        /// </summary>
        public string? DeleterId { get; set; }
        /// <summary>
        /// åˆ é™¤æ—¶é—´
        /// </summary>
        public DateTime? DeletionTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? CreatorName { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? LastModifierName { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? OperationRemark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? DeleteRemark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public string? Remark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool? IsDisabled { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField1 { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField2 { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string? ExtraField3 { get; set; }
    /// <summary>
    /// Gets the export data.
    /// </summary>
    /// <returns></returns>
    public Dictionary<string, object> GetExportData()
    {
        var exportData = new Dictionary<string, object>();
        foreach (var property in this.GetType().GetProperties())
        {
            exportData.Add(property.Name, property.GetValue(this));
        }
        return exportData;
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeExportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
using MiniExcelLibs.Attributes;
using System.ComponentModel.DataAnnotations;
using System;
using System.ComponentModel;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息导出模型
/// </summary>
public  class WmsMaterialTypeExportModel
{
            /// <summary>
        /// ç±»åž‹æè¿°
        /// </summary>
        [ExcelColumn(Name = "类型描述", Width = 25)]
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ç±»åž‹ç¼–码
        /// </summary>
        [ExcelColumn(Name = "类型编码", Width = 25)]
        public string MaterialTypeCode { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        [ExcelColumn(Name = "创建时间", Width = 25)]
        public DateTime CreationTime { get; set; }
        /// <summary>
        /// æœ€åŽä¿®æ”¹æ—¶é—´
        /// </summary>
        [ExcelColumn(Name = "最后修改时间", Width = 25)]
        public DateTime LastModificationTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        [ExcelColumn(Name = "", Width = 25)]
        public string CreatorName { get; set; }
        /// <summary>
        ///
        /// </summary>
        [ExcelColumn(Name = "", Width = 25)]
        public string LastModifierName { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [ExcelColumn(Name = "备注", Width = 25)]
        public string Remark { get; set; }
    public Dictionary<string, object> GetExportData()
        {
            var exportData = new Dictionary<string, object>();
            foreach (var property in this.GetType().GetProperties())
            {
                exportData.Add(property.Name, property.GetValue(this));
            }
            return exportData;
        }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypeUpdateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息更新参数对象
/// </summary>
public class WmsMaterialTypeUpdateDto : WmsMaterialTypeCreateOrUpdateDtoBase, IHasConcurrencyStamp
{
   /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    public string LastModifierName { get; set; }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialType/WmsMaterialTypesImportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType
{
    /// <summary>
    /// ç‰©æ–™l类型信息导入模型
    /// </summary>
    public class WmsMaterialTypesImportModel
    {
        private List<WmsMaterialTypeImportModel> _WmsMaterialTypes = new();
        public List<WmsMaterialTypeImportModel> WmsMaterialTypes
        {
            get => _WmsMaterialTypes;
            set
            {
                _WmsMaterialTypes = value;
                var rowIndex = 2;
                _WmsMaterialTypes?.ForEach(x => x.RowIndex = rowIndex++);
            }
        }
        /// <summary>
        /// ç‰©æ–™l类型信息导入模型
        /// </summary>
        public class WmsMaterialTypeImportModel : WmsMaterialTypeExportModel
        {
            /// <summary>
            /// è¡Œå·
            /// </summary>
            public int RowIndex { get; set; }
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/QueryTaskTypeInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask
{
    /// <summary>
    /// æŸ¥è¯¢ä»»åŠ¡å…¥å‚
    /// </summary>
    public class QueryTaskTypeInput
    {
        public TaskTypeEnum TaskType { get; set; }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialTypeAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
using Volo.Abp.Application.Services;
using CmsQueryExtensions.Entitys;
using System.Linq.Expressions;
using CMS.Plugin.HIAWms.Domain.WmsMaterialType;
namespace CMS.Plugin.HIAWms.Application.Contracts.Services;
/// <summary>
/// ç‰©æ–™l类型信息应用服务接口
/// </summary>
public interface IWmsMaterialTypeAppService : ICrudAppService<WmsMaterialTypeDto, Guid, GetWmsMaterialTypeInput, WmsMaterialTypeCreateDto, WmsMaterialTypeUpdateDto>
{
    /// <summary>
    /// å…‹éš†ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task<List<WmsMaterialTypeDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser);
    /// <summary>
    /// åˆ é™¤ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser);
    /// <summary>
    /// ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="id">主键ID</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default);
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息(直接删除,不软删除)
    /// </summary>
    /// <param name="ids">要删除的主键ID列表</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default);
    /// <summary>
    /// è°ƒæ•´æŽ’序物料l类型信息
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
    /// <returns></returns>
    Task AdjustSortAsync(Guid id, int sort);
    /// <summary>
    /// å¯¼å…¥ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task ImportAsync(WmsMaterialTypesImportModel input, MyCurrentUser myCurrentUser);
    /// <summary>
    /// å¯¼å‡ºç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialTypeInput input);
    /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ç‰©æ–™l类型信息列表
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default);
    /// <summary>
    ///  æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="isMultipleThrowException">是否查询出多条就报错</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default);
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs
@@ -64,4 +64,11 @@
    /// <param name="input"></param>
    /// <returns></returns>
    Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input);
    /// <summary>
    /// èŽ·å–éœ€è¦æ‰§è¡Œçš„å †åž›æœºä»»åŠ¡
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input);
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs
@@ -100,7 +100,7 @@
        public async Task<List<MaterialModelOutput>> GetMaterialModeListAsync()
        {
            var materialList = await _wmsMaterialRepository.GetMaterialListAsync(new WmsMaterial());
            if (materialList == null || materialList.Count <= 0) return new List<MaterialModelOutput>(); ;
            if (materialList == null || materialList.Count <= 0) return new List<MaterialModelOutput>();
            return materialList.Select(material => new MaterialModelOutput
            {
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
@@ -125,7 +125,7 @@
        wmsmaterial.MaterialName = input.MaterialName;
        wmsmaterial.PurchaseType = input.PurchaseType;
        wmsmaterial.MaterialType = input.MaterialType;
        wmsmaterial.MaterialTypeCode = input.MaterialTypeCode;
        wmsmaterial.PrimaryUnit = input.PrimaryUnit;
        wmsmaterial.Standard = input.Standard;
        wmsmaterial.OuterDiameter = input.OuterDiameter;
@@ -271,7 +271,7 @@
                        MaterialNo = wmsmaterial.MaterialNo,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        MaterialTypeCode = wmsmaterial.MaterialTypeCode,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
@@ -293,7 +293,7 @@
                        MaterialNo = wmsmaterial.MaterialNo,
                        MaterialName = wmsmaterial.MaterialName,
                        PurchaseType = wmsmaterial.PurchaseType,
                        MaterialType = wmsmaterial.MaterialType,
                        MaterialTypeCode = wmsmaterial.MaterialTypeCode,
                        PrimaryUnit = wmsmaterial.PrimaryUnit,
                        Standard = wmsmaterial.Standard,
                        OuterDiameter = wmsmaterial.OuterDiameter,
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialTypeAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,455 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Domain.WmsMaterialType;
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.HIAWms.Application.Implements;
/// <summary>
/// ç‰©æ–™l类型信息应用服务
/// </summary>
public class WmsMaterialTypeAppService : CMSPluginAppService, IWmsMaterialTypeAppService
{
    private readonly IWmsMaterialTypeRepository _WmsMaterialTypeRepository;
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialTypeAppService"/> class.
    /// </summary>
    /// <param name="WmsMaterialTypeRepository">The task job repository.</param>
    public WmsMaterialTypeAppService(IWmsMaterialTypeRepository WmsMaterialTypeRepository)
    {
        _WmsMaterialTypeRepository = WmsMaterialTypeRepository;
    }
    /// <summary>
    /// èŽ·å–æŒ‡å®šç‰©æ–™l类型信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual async Task<WmsMaterialTypeDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(await _WmsMaterialTypeRepository.GetAsync(id));
    }
    /// <summary>
    /// åˆ†é¡µèŽ·å–ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public virtual async Task<PagedResultDto<WmsMaterialTypeDto>> GetListAsync(GetWmsMaterialTypeInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsMaterialType.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
        //动态构造查询条件
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var count = await _WmsMaterialTypeRepository.GetCountAsync(whereConditions);
        var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount);
        return new PagedResultDto<WmsMaterialTypeDto>(count, ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list));
    }
    /// <summary>
    /// åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
    /// </summary>
    /// <param name="input">输入参数</param>
    /// <returns></returns>
    private FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> DynamicGetQueryParams(GetWmsMaterialTypeInput input)
    {
        //动态构造查询条件
        var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterialType, GetWmsMaterialTypeInput>(input);
        if (!whereConditions.IsSuccess)
        {
            throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
        }
        //也可再次自定义构建查询条件
        Expression<Func<WmsMaterialType, bool>> extendExpression = a => a.IsDeleted == false;
        // ä½¿ç”¨ System.Linq.PredicateBuilder çš„ And
        var pres = (System.Linq.Expressions.Expression<Func<WmsMaterialType, bool>>)(whereConditions.data);
        whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
        return whereConditions;
    }
    /// <summary>
    /// æ–°å»ºç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public virtual async Task<WmsMaterialTypeDto> CreateAsync(WmsMaterialTypeCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]);
        }
        var maxSort = await _WmsMaterialTypeRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var insertObj = ObjectMapper.Map<WmsMaterialTypeCreateDto, WmsMaterialType>(input);
        insertObj.Sort = sort;
        input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None);
        insertObj.CreatorName = input.CreatorName;//创建人
        await _WmsMaterialTypeRepository.InsertAsync(insertObj);
        //if (input.Sort.HasValue && insertObj.Sort != maxSort)
        //{
        //    await AdjustSortAsync(insertObj.Id, insertObj.Sort);
        //}
        return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(insertObj);
    }
    /// <summary>
    /// æ›´æ–°ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="id"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public virtual async Task<WmsMaterialTypeDto> UpdateAsync(Guid id, WmsMaterialTypeUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var updateObj = await _WmsMaterialTypeRepository.GetAsync(id);
        var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode, updateObj.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]);
        }
        updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None);
                updateObj.MaterialTypeDesc = input.MaterialTypeDesc;
        updateObj.MaterialTypeCode = input.MaterialTypeCode;
        updateObj.Remark = input.Remark;
        updateObj.LastModifierName = input.LastModifierName;//修改人
        await _WmsMaterialTypeRepository.UpdateAsync(updateObj);
        return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(updateObj);
    }
    /// <summary>
    /// å…‹éš†ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialTypeDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
        //var WmsMaterialTypes = new List<WmsMaterialType>();
        //if (ids != null)
        //{
        //    var sort = await _WmsMaterialTypeRepository.GetMaxSortAsync();
        //    foreach (var id in ids)
        //    {
        //        var WmsMaterialType = await _WmsMaterialTypeRepository.FindAsync(id);
        //        if (WmsMaterialType != null)
        //        {
        //            var name = WmsMaterialType.Name + WmsMaterialTypeConsts.CloneTag;
        //            var notExist = false;
        //            while (!notExist)
        //            {
        //                var exist = await _WmsMaterialTypeRepository.NameExistAsync(name);
        //                if (exist || WmsMaterialTypes.Any(x => x.Name == name))
        //                {
        //                    name += WmsMaterialTypeConsts.CloneTag;
        //                    continue;
        //                }
        //                notExist = true;
        //            }
        //            //WmsMaterialType = await _WmsMaterialTypeRepository.InsertAsync(WmsMaterialType.Clone(GuidGenerator.Create(), name, sort++));
        //            WmsMaterialTypes.Add(WmsMaterialType);
        //        }
        //    }
        //}
        //return ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(WmsMaterialTypes);
        return new List<WmsMaterialTypeDto>();
    }
    /// <summary>
    /// åˆ é™¤å•个物料l类型信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public virtual Task DeleteAsync(Guid id)
    {
        return _WmsMaterialTypeRepository.DeleteAsync(id);
    }
    /// <summary>
    /// åˆ é™¤å¤šä¸ªç‰©æ–™l类型信息
    /// </summary>
    /// <param name="ids"></param>
    /// <returns></returns>
    public async Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
     /// <summary>
    /// ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="id">主键ID</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _WmsMaterialTypeRepository.DeletePermanentlyAsync(id);
    }
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息(直接删除,不软删除)
    /// </summary>
    /// <param name="ids">要删除的主键ID列表</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default)
    {
        _WmsMaterialTypeRepository.BatchDeletePermanentlyAsync(ids);
    }
    /// <summary>
    /// è°ƒæ•´æŽ’序物料l类型信息
    /// </summary>
    /// <param name="id"></param>
    /// <param name="sort"></param>
    /// <returns></returns>
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _WmsMaterialTypeRepository.GetListAsync(null, nameof(WmsMaterialType.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await _WmsMaterialTypeRepository.UpdateManyAsync(list);
    }
    /// <summary>
    /// å¯¼å…¥ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task ImportAsync(WmsMaterialTypesImportModel input, MyCurrentUser myCurrentUser)
    {
        Check.NotNull(input, nameof(input));
        var WmsMaterialTypeCreateDtos = new List<(int RowIndex, WmsMaterialTypeCreateDto Item)>();
        var WmsMaterialTypeUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialTypeUpdateDto Item)>();
        var importItems = input.WmsMaterialTypes;
        if (importItems != null && importItems.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicateWmsMaterialTypes = importItems.GroupBy(x => x.MaterialTypeCode).Where(x => x.Count() > 1).ToList();
            if (duplicateWmsMaterialTypes?.Any() == true)
            {
                var duplicateWmsMaterialTypeMsgs = duplicateWmsMaterialTypes.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsMaterialTypeMsgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var impItem in importItems)
            {
                if (impItem.MaterialTypeCode.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (impItem.MaterialTypeCode.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsMaterialType名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldWmsMaterialType = await _WmsMaterialTypeRepository.FindByNameAsync(impItem.MaterialTypeCode);
                if (oldWmsMaterialType != null)
                {
                    var WmsMaterialTypeUpdateDto = new WmsMaterialTypeUpdateDto
                    {
                        MaterialTypeDesc = impItem.MaterialTypeDesc,
MaterialTypeCode = impItem.MaterialTypeCode,
Remark = impItem.Remark,
                    };
                    WmsMaterialTypeUpdateDtos.Add((impItem.RowIndex, oldWmsMaterialType.Id, WmsMaterialTypeUpdateDto));
                }
                else
                {
                    var WmsMaterialTypeCreateDto = new WmsMaterialTypeCreateDto
                    {
                        MaterialTypeDesc = impItem.MaterialTypeDesc,
MaterialTypeCode = impItem.MaterialTypeCode,
Remark = impItem.Remark,
                    };
                    WmsMaterialTypeCreateDtos.Add((impItem.RowIndex, WmsMaterialTypeCreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var WmsMaterialTypeDto in WmsMaterialTypeCreateDtos)
        {
            try
            {
                WmsMaterialTypeDto.Item.CreatorName = myCurrentUser.UserAccount;//创建人
                await CreateAsync(WmsMaterialTypeDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{WmsMaterialTypeDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var WmsMaterialTypeDto in WmsMaterialTypeUpdateDtos)
        {
            try
            {
                WmsMaterialTypeDto.Item.LastModifierName = myCurrentUser.UserAccount;//修改人
                await UpdateAsync(WmsMaterialTypeDto.Id, WmsMaterialTypeDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{WmsMaterialTypeDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <summary>
    /// å¯¼å‡ºç‰©æ–™l类型信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialTypeInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(WmsMaterialType.Sort);
        }
        #region åŠ¨æ€æž„é€ æŸ¥è¯¢æ¡ä»¶
        //动态构造查询条件
        var whereConditions = DynamicGetQueryParams(input);
        #endregion
        var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true);
        var result = ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = ExportHelper.ConvertListToExportData(result),
        };
        var fileName = "物料类型";
        return (sheets, fileName);
    }
    /// <summary>
    /// æ ¡éªŒç‰©æ–™l类型信息,当新建或更新时
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialTypeCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
                Check.NotNullOrWhiteSpace(input.MaterialTypeDesc, "类型描述", 128);
        Check.NotNullOrWhiteSpace(input.MaterialTypeCode, "类型编码", 64);
        return Task.CompletedTask;
    }
     /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ç‰©æ–™l类型信息列表
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await _WmsMaterialTypeRepository.GetListByFilterAsync(whereConditions);
    }
    /// <summary>
    ///  æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="isMultipleThrowException">是否查询出多条就报错</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default)
    {
        return await _WmsMaterialTypeRepository.GetSingleByFilterAsync(whereConditions, is​MultipleThrowException);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -20,6 +20,8 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
using Volo.Abp.Uow;
using Microsoft.Extensions.DependencyInjection;
using NPOI.SS.Formula.Functions;
using System.Collections.Generic;
namespace CMS.Plugin.HIAWms.Application.Implements;
@@ -738,4 +740,29 @@
        await wmsTaskRepository.UpdateAsync(task);
    }
    /// <summary>
    /// èŽ·å–éœ€è¦æ‰§è¡Œçš„ä»»åŠ¡
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
    {
        var queryInput = new GetWmsTaskInput
        {
            TaskStatus = WmsTaskStatus.WEIZHIXING,
        };
        var whereConditions = DynamicGetQueryParams(queryInput);
        var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions);
        if(NoStartTaskList.Count<=0) return null;
        var executeTask = NoStartTaskList.FirstOrDefault(x=>x.TaskType == input.TaskType);
        if(executeTask == null)
        {
            return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault());
        }
        return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialTypeAutoMapperProfile.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using AutoMapper;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
using CMS.Plugin.HIAWms.Domain.WmsMaterialType;
using Volo.Abp.ObjectExtending;
namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
/// <summary>
/// ç‰©æ–™l类型信息AutoMapper配置
/// </summary>
/// <seealso cref="AutoMapper.Profile" />
public class WmsMaterialTypeAutoMapperProfile : Profile
{
    /// <summary>
    /// Initializes a new instance of the <see cref="WmsMaterialTypeAutoMapperProfile"/> class.
    /// </summary>
    public WmsMaterialTypeAutoMapperProfile()
    {
        /* You can configure your AutoMapper mapping configuration here.
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<WmsMaterialType, WmsMaterialTypeDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<WmsMaterialTypeCreateDto, WmsMaterialType>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
        CreateMap<GetWmsMaterialTypeInput, WmsMaterialType>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/MaterialType/WmsMaterialType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using CMS.Plugin.MyExtension.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.HIAWms.Domain.MaterialType
{
    public class WmsMaterialType : MyFullAuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// ç±»åž‹æè¿°
        /// </summary>
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ç±»åž‹ç¼–码
        /// </summary>
        public string MaterialTypeCode { get; set; }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialType/IWmsMaterialTypeRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp.Domain.Repositories;
namespace CMS.Plugin.HIAWms.Domain.WmsMaterialType;
/// <summary>
/// ç‰©æ–™l类型信息仓储
/// </summary>
public interface IWmsMaterialTypeRepository : IBasicRepository<WmsMaterialType, Guid>
{
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<WmsMaterialType> FindByNameAsync(string name, CancellationToken cancellationToken = default);
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="name"></param>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> NameExistAsync(string name, Guid? id = null);
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åºç‰©æ–™l类型信息
    /// </summary>
    /// <returns></returns>
    Task<int> GetMaxSortAsync();
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="maxResultCount"></param>
    /// <param name="skipCount"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WmsMaterialType>> GetListAsync(FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
    /// <summary>
    /// èŽ·å–æ€»æ•°ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> whereConditions, CancellationToken cancellationToken = default);
    /// <summary>
    /// ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="id">主键ID</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task DeletePermanentlyAsync(Guid id, CancellationToken cancellationToken = default);
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息(直接删除,不软删除)
    /// </summary>
    /// <param name="ids">要删除的主键ID列表</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, CancellationToken cancellationToken = default);
    /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ç‰©æ–™l类型信息列表
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default);
    /// <summary>
    ///  æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="isMultipleThrowException">是否查询出多条就报错</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default);
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterials/WmsMaterial.cs
@@ -35,7 +35,12 @@
        /// <summary>
        /// ç‰©æ–™ç±»åž‹ï¼ˆæžšä¸¾å€¼ï¼‰
        /// </summary>
        public MaterialTypeEnum MaterialType { get; set; }
        public string  MaterialTypeCode { get; set; }
        /// <summary>
        /// ç‰©æ–™ç±»åž‹
        /// </summary>
        public string MaterialTypeDesc { get; set; }
        /// <summary>
        /// ä¸»å•位(如:kg、m、个)
HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsTask/IWmsTaskRepository.cs
@@ -58,4 +58,14 @@
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<WmsTask> QueryWmsTaskByDataIdentifierAasync(string dataIdentifier, CancellationToken cancellationToken = default);
    /// <summary>
    /// èŽ·å–ä»»åŠ¡åˆ—è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<List<WmsTask>> GetTaskListAsync(FunReturnResultModel<Expression<Func<WmsTask, bool>>> whereConditions, string sorting = null, bool includeDetails = false, CancellationToken cancellationToken = default);
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs
@@ -63,8 +63,13 @@
            b.Property(x => x.PurchaseType)
                .HasComment("采购类型(枚举值)");
            b.Property(x => x.MaterialType)
                .HasComment("物料类型(枚举值)");
            b.Property(x => x.MaterialTypeCode)
                .HasMaxLength(20)
                .HasComment("物料类型编码");
            b.Property(x => x.MaterialTypeDesc)
                .HasMaxLength(20)
                .HasComment("物料类型");
            b.Property(x => x.PrimaryUnit)
                .HasMaxLength(20)
@@ -140,7 +145,7 @@
            b.HasIndex(x => x.MaterialNo).IsUnique(); // ç‰©æ–™ç¼–码唯一索引
            b.HasIndex(x => x.MaterialName);           // ç‰©æ–™åç§°æ™®é€šç´¢å¼•
            b.HasIndex(x => x.PurchaseType);           // é‡‡è´­ç±»åž‹ç´¢å¼•(如需查询过滤)
            b.HasIndex(x => x.MaterialType);           // ç‰©æ–™ç±»åž‹ç´¢å¼•(如需查询过滤)
            b.HasIndex(x => x.MaterialTypeCode);           // ç‰©æ–™ç±»åž‹ç´¢å¼•(如需查询过滤)
            b.ApplyObjectExtensionMappings();
        });
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterialType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
using CMS.Plugin.HIAWms.Domain;
using CMS.Plugin.HIAWms.Domain.MaterialType;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions
{
    public static partial class CMSPluginEfCoreExtensions
    {
        /// <summary>
        /// Includes the details.
        /// </summary>
        /// <param name="queryable">The queryable.</param>
        /// <param name="include">if set to <c>true</c> [include].</param>
        /// <returns></returns>
        public static IQueryable<WmsMaterialType> IncludeDetails(this IQueryable<WmsMaterialType> queryable, bool include = true)
        {
            if (!include)
            {
                return queryable;
            }
            return queryable;
        }
        /// <summary>
        /// ConfigureWmsMaterialType
        /// </summary>
        /// <param name="builder"></param>
        public static void ConfigureWmsMaterialType(this ModelBuilder builder)
        {
            Check.NotNull(builder, nameof(builder));
            builder.Entity<WmsMaterialType>(b =>
            {
                // é…ç½®è¡¨åå’Œæ³¨é‡Š
                b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsMaterialType").ToLower(),
                         CMSPluginDbProperties.DbSchema)
                 .HasComment("物料类型表");
                b.ConfigureByConvention();
                // ä¸»é”®é…ç½®ï¼ˆMyFullAuditedAggregateRoot<Guid> å·²é»˜è®¤åŒ…含 Id)
                b.HasKey(x => x.Id);
                // å­—段配置
                b.Property(x => x.MaterialTypeCode)
                    .HasMaxLength(64)
                    .IsRequired()
                    .HasComment("类型编码");
                b.Property(x => x.MaterialTypeDesc)
                    .HasMaxLength(128)
                    .IsRequired()
                    .HasComment("类型描述");
                // å…¶ä»–通用字段(继承自MyFullAuditedAggregateRoot<Guid>)
                b.Property(x => x.Remark)
                   .HasMaxLength(50)
                   .HasComment("备注");
                b.Property(x => x.CreationTime)
                    .HasComment("创建时间");
                b.Property(x => x.CreatorId)
                    .HasComment("创建人ID");
                b.Property(x => x.LastModificationTime)
                    .HasComment("最后修改时间");
                b.Property(x => x.LastModifierId)
                    .HasComment("最后修改人ID");
                b.Property(x => x.IsDeleted)
                    .HasDefaultValue(false)
                    .HasComment("是否已删除");
                b.Property(x => x.DeleterId)
                    .HasComment("删除人ID");
                b.Property(x => x.DeletionTime)
                    .HasComment("删除时间");
                // ç´¢å¼•配置
                b.HasIndex(x => x.MaterialTypeCode).IsUnique(); // ç±»åž‹ç¼–码唯一索引
                b.HasIndex(x => x.MaterialTypeDesc);           // ç±»åž‹æè¿°æ™®é€šç´¢å¼•
                b.ApplyObjectExtensionMappings();
            });
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs
@@ -104,7 +104,7 @@
        return await (await GetDbSetAsync())
            .WhereIf(!string.IsNullOrEmpty(material.MaterialName), u => u.MaterialName.Contains(material.MaterialName))
            .WhereIf(!string.IsNullOrEmpty(material.MaterialNo), u => u.MaterialNo.Contains(material.MaterialNo))
            .WhereIf(material.MaterialType > 0, u => u.MaterialType == material.MaterialType)
            .WhereIf(!string.IsNullOrEmpty(material.MaterialTypeCode), u => u.MaterialTypeCode == material.MaterialTypeCode)
            .WhereIf(material.PurchaseType > 0, u => u.PurchaseType == material.PurchaseType)
            .Where(x => !x.IsDeleted)
            .ToListAsync(GetCancellationToken(cancellationToken));
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialTypeRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,218 @@
using CMS.Plugin.HIAWms.Domain.WmsMaterialType;
using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions;
using CmsQueryExtensions.Extension;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using Volo.Abp;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories;
/// <summary>
/// ç‰©æ–™l类型信息仓储实现
/// </summary>
public class EfCoreWmsMaterialTypeRepository : EfCoreRepository<ICMSPluginDbContext, WmsMaterialType, Guid>, IWmsMaterialTypeRepository
{
    /// <summary>
    /// Initializes a new instance of the <see cref="EfCoreWmsMaterialTypeRepository"/> class.
    /// </summary>
    /// <param name="dbContextProvider">The database context provider.</param>
    public EfCoreWmsMaterialTypeRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }
    /// <summary>
    /// æŒ‰ç…§åç§°æŸ¥æ‰¾ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="name"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public virtual async Task<WmsMaterialType> FindByNameAsync(string name, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails()
            .Where(x => !x.IsDeleted)
            .OrderByDescending(x=>x.CreationTime)
            .FirstOrDefaultAsync(t => t.MaterialTypeCode == name, GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// éªŒè¯åç§°æ˜¯å¦å­˜åœ¨ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="name">校验值</param>
    /// <param name="id"></param>
    /// <returns></returns>
    public async Task<bool> NameExistAsync(string name, Guid? id = null)
    {
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialTypeCode == name);
    }
    /// <summary>
    /// èŽ·å–æœ€å¤§æŽ’åºç‰©æ–™l类型信息
    /// </summary>
    /// <returns></returns>
    public async Task<int> GetMaxSortAsync()
    {
        var hasAny = await (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).AnyAsync();
        if (!hasAny)
        {
            return 1;
        }
        var sort = await (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
        return sort + 1;
    }
    /// <summary>
    /// èŽ·å–åˆ†é¡µåˆ—è¡¨ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="maxResultCount"></param>
    /// <param name="skipCount"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialType>> GetListAsync(FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails(includeDetails)
            .WhereIf(whereConditions != null, whereConditions.data)
            .Where(x => !x.IsDeleted)
            .OrderByDescending(x=>x.CreationTime)
            .PageBy(skipCount, maxResultCount)
            .ToListAsync(GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// èŽ·å–æ€»æ•°ç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await (await GetQueryableAsync())
            .WhereIf(whereConditions != null, whereConditions.data)
            .Where(x => !x.IsDeleted)
            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    public override async Task<IQueryable<WmsMaterialType>> WithDetailsAsync()
    {
        return (await GetQueryableAsync())
            .Where(x => !x.IsDeleted).IncludeDetails();
    }
    /// <summary>
    /// ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息
    /// </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(WmsMaterialType), id);
        }
        // 2. èŽ·å– DbContext å¹¶æ‰§è¡Œåˆ é™¤
        var dbContext = await GetDbContextAsync();
        // ç›´æŽ¥æ‰§è¡Œ SQL åˆ é™¤
        var sql = $"DELETE FROM scms_wmsmaterialtype WHERE Id ='{entity.Id.ToString()}'";
        await dbContext.Database.ExecuteSqlRawAsync(sql, cancellationToken);
    }
    /// <summary>
    /// æ‰¹é‡ç‰©ç†åˆ é™¤ç‰©æ–™l类型信息(直接删除,不软删除)
    /// </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_wmsmaterialtype WHERE Id IN ({string.Join(",", idsToDelete.Select(id => $"'{id}'"))})";
        await dbContext.Database.ExecuteSqlRawAsync(sql, cancellationToken);
    }
    /// <summary>
    /// æ ¹æ®æ¡ä»¶èŽ·å–ç‰©æ–™l类型信息列表
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails()
            .WhereIf(whereConditions != null, whereConditions)
            .Where(x => !x.IsDeleted)
            .OrderByDescending(x => x.CreationTime)
            .ToListAsync(GetCancellationToken(cancellationToken));
    }
    /// <summary>
    ///  æ ¹æ®æ¡ä»¶èŽ·å–å•ä¸ªç‰©æ–™l类型信息
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="isMultipleThrowException">是否查询出多条就报错</param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool is​MultipleThrowException = false, CancellationToken cancellationToken = default)
    {
        if (is​MultipleThrowException)
        {
            var entitys = await (await GetDbSetAsync())
                .IncludeDetails()
                .WhereIf(whereConditions != null, whereConditions)
                .Where(x => !x.IsDeleted)
                .OrderByDescending(x => x.CreationTime)
                .ToListAsync(GetCancellationToken(cancellationToken));
            if (entitys?.Count > 1)
            {
                throw new UserFriendlyException("查询到多条记录");
            }
            return entitys?.FirstOrDefault();
        }
        else
        {
            return await (await GetDbSetAsync())
                .IncludeDetails()
                .WhereIf(whereConditions != null, whereConditions)
                .Where(x => !x.IsDeleted)
                .OrderByDescending(x => x.CreationTime)
                .FirstOrDefaultAsync(GetCancellationToken(cancellationToken));
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsTaskRepository.cs
@@ -125,4 +125,23 @@
           .OrderByDescending(x=>x.CreationTime)
           .FirstOrDefaultAsync(t => t.MutableParam2 == dataIdentifier, GetCancellationToken(cancellationToken));
    }
    /// <summary>
    /// èŽ·å–ä»»åŠ¡åˆ—è¡¨
    /// </summary>
    /// <param name="whereConditions"></param>
    /// <param name="sorting"></param>
    /// <param name="includeDetails"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<List<WmsTask>> GetTaskListAsync(FunReturnResultModel<Expression<Func<WmsTask, bool>>> whereConditions, string sorting = null, bool includeDetails = false, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails(includeDetails)
            .WhereIf(whereConditions != null, whereConditions.data)
            .Where(x => !x.IsDeleted)
            .OrderBy(x => x.TaskType)
            .ThenBy(x=>x.TaskLevel)
            .ToListAsync(GetCancellationToken(cancellationToken));
    }
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs
@@ -45,6 +45,7 @@
        builder.ConfigureWmsMaterialContainer();
        builder.ConfigureWmsInOutStockOrder();
        builder.ConfigureWmsInOutStockOrderDetail();
        builder.ConfigureWmsMaterialType();
        /* Configure your own tables/entities inside here */
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250515034921_InitialCreate17.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1909 @@
// <auto-generated />
using System;
using CMS.Plugin.HIAWms.MySQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    [DbContext(typeof(CMSPluginDbContext))]
    [Migration("20250515034921_InitialCreate17")]
    partial class InitialCreate17
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.MaterialType.WmsMaterialType", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime")
                        .HasComment("创建时间");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId")
                        .HasComment("创建人ID");
                    b.Property<string>("CreatorName")
                        .HasColumnType("longtext");
                    b.Property<string>("DeleteRemark")
                        .HasColumnType("longtext");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId")
                        .HasComment("删除人ID");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime")
                        .HasComment("删除时间");
                    b.Property<string>("ExtraField1")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraField2")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraField3")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted")
                        .HasComment("是否已删除");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime")
                        .HasComment("最后修改时间");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId")
                        .HasComment("最后修改人ID");
                    b.Property<string>("LastModifierName")
                        .HasColumnType("longtext");
                    b.Property<string>("MaterialTypeCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("类型编码");
                    b.Property<string>("MaterialTypeDesc")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("类型描述");
                    b.Property<string>("OperationRemark")
                        .HasColumnType("longtext");
                    b.Property<string>("Remark")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int");
                    b.HasKey("Id");
                    b.HasIndex("MaterialTypeCode")
                        .IsUnique();
                    b.HasIndex("MaterialTypeDesc");
                    b.ToTable("scms_wmsmaterialtype", (string)null);
                    b.HasComment("物料类型表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaDesc")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("描述");
                    b.Property<string>("AreaName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("库区名称");
                    b.Property<string>("AreaNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库区编号");
                    b.Property<int>("AreaStatus")
                        .HasColumnType("int")
                        .HasComment("库区状态");
                    b.Property<int>("AreaType")
                        .HasColumnType("int")
                        .HasComment("库区类型");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("AreaName");
                    b.ToTable("scms_wmsareas", (string)null);
                    b.HasComment("库区表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainerPlace.WmsContainerPlace", b =>
                {
                    b.Property<string>("PlaceNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("库位编码");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp")
                        .HasComment("并发戳");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime")
                        .HasComment("创建时间");
                    b.Property<Guid?>("CreatorId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId")
                        .HasComment("创建人ID");
                    b.Property<string>("CreatorName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("创建人");
                    b.Property<string>("DeleteRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("删除备注");
                    b.Property<Guid?>("DeleterId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId")
                        .HasComment("删除人ID");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime")
                        .HasComment("删除时间");
                    b.Property<string>("ExtraField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段1");
                    b.Property<string>("ExtraField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段2");
                    b.Property<string>("ExtraField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("扩展字段3");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties")
                        .HasComment("扩展属性");
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted")
                        .HasComment("是否删除");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime")
                        .HasComment("修改时间");
                    b.Property<Guid?>("LastModifierId")
                        .HasMaxLength(36)
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId")
                        .HasComment("修改人ID");
                    b.Property<string>("LastModifierName")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("修改人");
                    b.Property<string>("OperationRemark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("操作备注");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.HasKey("PlaceNo", "ContainerNo");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("PlaceNo");
                    b.ToTable("scms_wmscontainerplaces", (string)null);
                    b.HasComment("容器库位关系表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsContainers.WmsContainer", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("托盘状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("托盘类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("ExceptionNumber")
                        .HasColumnType("int")
                        .HasComment("异常数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal?>("LimitHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限高");
                    b.Property<decimal?>("LimitLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限长");
                    b.Property<decimal?>("LimitWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("限宽");
                    b.Property<int?>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("物料数量");
                    b.Property<decimal?>("MaxWeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("载重上限");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<decimal?>("SpecHeight")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("高度");
                    b.Property<decimal?>("SpecLength")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度");
                    b.Property<decimal?>("SpecWidth")
                        .HasPrecision(18, 2)
                        .HasColumnType("decimal(18,2)")
                        .HasComment("宽度");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo")
                        .IsUnique();
                    b.HasIndex("ContainerStatus");
                    b.HasIndex("ContainerType");
                    b.ToTable("scms_wmscontainers", (string)null);
                    b.HasComment("托盘信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder.WmsInOutStockOrder", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("CompleteNumber")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("完成数量");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("DistributeNumber")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("下发数量");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MaterialBatch")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("批次号");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("型号");
                    b.Property<string>("MaterialName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料件号");
                    b.Property<int>("MaterialNumber")
                        .HasColumnType("int")
                        .HasComment("单据数量");
                    b.Property<DateTime?>("OperateTime")
                        .HasColumnType("datetime(6)")
                        .HasComment("操作时间");
                    b.Property<string>("OrderNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("单据编号");
                    b.Property<int>("OrderStatus")
                        .HasColumnType("int")
                        .HasComment("单据状态");
                    b.Property<int>("OrderType")
                        .HasColumnType("int")
                        .HasComment("单据类型");
                    b.Property<string>("PlanNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("关联计划编号");
                    b.Property<int>("Priority")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(1)
                        .HasComment("优先级");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<int>("StockType")
                        .HasColumnType("int")
                        .HasComment("操作类型(枚举值)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialBatch");
                    b.HasIndex("MaterialNo");
                    b.HasIndex("OperateTime");
                    b.HasIndex("OrderNo")
                        .IsUnique();
                    b.HasIndex("PlanNo");
                    b.ToTable("scms_wmsinoutstockorder", (string)null);
                    b.HasComment("出入库单据表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsInOutStockOrderDetail.WmsInOutStockOrderDetail", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("容器编号");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MaterialBatch")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料批次");
                    b.Property<string>("MaterialId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料唯一码");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("机型");
                    b.Property<string>("MaterialName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料件号");
                    b.Property<string>("OrderNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("单据编号");
                    b.Property<int>("OrderType")
                        .HasColumnType("int")
                        .HasComment("单据类型(枚举值)");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("MaterialId");
                    b.HasIndex("MaterialNo");
                    b.HasIndex("OrderNo");
                    b.HasIndex("OrderNo", "OrderType");
                    b.ToTable("scms_wmsinoutstockorderdetail", (string)null);
                    b.HasComment("出入库单据明细表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord.WmsInOutStockRecord", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("容器编号");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MaterialBatch")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料批次");
                    b.Property<string>("MaterialId")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料ID");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("机型");
                    b.Property<string>("MaterialName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料件号");
                    b.Property<DateTime?>("OperateTime")
                        .HasColumnType("datetime(6)")
                        .HasComment("操作时间");
                    b.Property<string>("OrderNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("单据编号");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("SourcePlace")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("起始库位");
                    b.Property<int>("StockType")
                        .HasColumnType("int")
                        .HasComment("操作类型");
                    b.Property<string>("TaskNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("任务号");
                    b.Property<string>("ToPlace")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("目标库位");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("MaterialId");
                    b.HasIndex("MaterialNo");
                    b.HasIndex("OperateTime");
                    b.HasIndex("OrderNo");
                    b.HasIndex("StockType");
                    b.HasIndex("TaskNo");
                    b.ToTable("scms_wmsinoutstockrecords", (string)null);
                    b.HasComment("出入库记录表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialContainer.WmsMaterialContainer", b =>
                {
                    b.Property<string>("MaterialId")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料ID");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("Sort")
                        .HasColumnType("int");
                    b.HasKey("MaterialId", "ContainerNo");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("MaterialId");
                    b.ToTable("scms_wmsmaterialcontainer", (string)null);
                    b.HasComment("物料容器关系表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialInfos.WmsMaterialInfo", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int?>("CheckStatus")
                        .HasColumnType("int")
                        .HasComment("检验状态(0:未检验,1:检验通过,2:检验不通过)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MaterialBatch")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料批号");
                    b.Property<string>("MaterialId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料唯一码");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("机型/规格");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("物料代号");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(255)
                        .HasColumnType("varchar(255)")
                        .HasComment("冗余字段1");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(255)
                        .HasColumnType("varchar(255)")
                        .HasComment("冗余字段2");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(255)
                        .HasColumnType("varchar(255)")
                        .HasComment("冗余字段3");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<int?>("StockNumber")
                        .HasColumnType("int")
                        .HasComment("库存数量");
                    b.Property<string>("SupplierCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("供应商编号");
                    b.HasKey("Id");
                    b.HasIndex("CheckStatus");
                    b.HasIndex("MaterialBatch");
                    b.HasIndex("MaterialId")
                        .IsUnique();
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialNo")
                        .IsUnique();
                    b.HasIndex("SupplierCode");
                    b.ToTable("scms_wmsmaterialinfos", (string)null);
                    b.HasComment("WMS物料信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterials.WmsMaterial", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("Certification")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("证书编号");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<string>("Factory")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("生产工厂");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<int>("IsMainBranch")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("是否为主支管");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<decimal>("Length")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("长度(单位:m)");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("型号");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编码(唯一标识)");
                    b.Property<string>("MaterialQuality")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<string>("MaterialTypeCode")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("物料类型编码");
                    b.Property<string>("MaterialTypeDesc")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("物料类型");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("外径(单位:mm)");
                    b.Property<string>("PrimaryUnit")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("主单位(如:kg、m、个)");
                    b.Property<int>("PurchaseType")
                        .HasColumnType("int")
                        .HasComment("采购类型(枚举值)");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<string>("Standard")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("规格/标准(如:GB/T 8163-2018)");
                    b.Property<decimal>("WallThickness")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("壁厚(单位:mm)");
                    b.HasKey("Id");
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialNo")
                        .IsUnique();
                    b.HasIndex("MaterialTypeCode");
                    b.HasIndex("PurchaseType");
                    b.ToTable("scms_wmsmaterials", (string)null);
                    b.HasComment("物料基础信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsMaterialStocks.WmsMaterialStock", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("AreaCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("区域编号");
                    b.Property<string>("AreaName")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("库区名称");
                    b.Property<int?>("CheckStatus")
                        .HasColumnType("int")
                        .HasComment("检验状态(1:未检验,2:检验通过,3:检验不通过)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("容器编号");
                    b.Property<int>("ContainerStatus")
                        .HasColumnType("int")
                        .HasComment("容器状态");
                    b.Property<int>("ContainerType")
                        .HasColumnType("int")
                        .HasComment("容器类型");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托(2:否,1:是)");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<DateTime?>("InStockTime")
                        .HasColumnType("datetime(6)")
                        .HasComment("入库时间");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int>("IsLock")
                        .HasColumnType("int")
                        .HasComment("是否锁定(2:未锁定,1:已锁定)");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MaterialBatch")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料批次");
                    b.Property<string>("MaterialId")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料ID");
                    b.Property<string>("MaterialModel")
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("机型/规格");
                    b.Property<string>("MaterialName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("物料名称");
                    b.Property<string>("MaterialNo")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("物料编号");
                    b.Property<string>("PlaceNo")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("库位编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("库位状态;");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(500)
                        .HasColumnType("varchar(500)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("排序");
                    b.Property<int>("StockNumber")
                        .HasColumnType("int")
                        .HasComment("库存数量");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("库位类型");
                    b.Property<string>("SupplierCode")
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("供应商编号");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("MaterialName");
                    b.HasIndex("MaterialNo");
                    b.HasIndex("PlaceNo");
                    b.HasIndex("MaterialBatch", "SupplierCode");
                    b.ToTable("scms_wmsmaterialstocks", (string)null);
                    b.HasComment("WMS物料库存表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsPlaces.WmsPlace", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("AreaCode")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("所在库区");
                    b.Property<int>("ColumnNo")
                        .HasColumnType("int")
                        .HasComment("列");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int>("EmptyContainer")
                        .HasColumnType("int")
                        .HasComment("是否空托");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool>("IsDisabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasComment("是否禁用");
                    b.Property<int>("Islock")
                        .HasColumnType("int")
                        .HasComment("是否锁定");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<int>("LayerNo")
                        .HasColumnType("int")
                        .HasComment("层");
                    b.Property<int>("MaxStockNumber")
                        .HasColumnType("int")
                        .HasComment("最大库存量");
                    b.Property<string>("PlaceNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("编号");
                    b.Property<int>("PlaceStatus")
                        .HasColumnType("int")
                        .HasComment("货位状态");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("RowNo")
                        .HasColumnType("int")
                        .HasComment("排");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<int>("StorageTypeNo")
                        .HasColumnType("int")
                        .HasComment("货位类型");
                    b.HasKey("Id");
                    b.HasIndex("AreaCode");
                    b.HasIndex("PlaceNo")
                        .IsUnique();
                    b.HasIndex("PlaceStatus");
                    b.HasIndex("StorageTypeNo");
                    b.ToTable("scms_wmsplaces", (string)null);
                    b.HasComment("库位表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsStores.WmsStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("RedundantField1")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段1 - é¢„留扩展用途");
                    b.Property<string>("RedundantField2")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段2 - é¢„留扩展用途");
                    b.Property<string>("RedundantField3")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("冗余字段3 - é¢„留扩展用途");
                    b.Property<string>("Remark")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("StoreCode")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("仓库代码");
                    b.Property<string>("StoreName")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)")
                        .HasComment("仓库名称");
                    b.HasKey("Id");
                    b.HasIndex("StoreName");
                    b.ToTable("scms_wmsstores", (string)null);
                    b.HasComment("仓库信息表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsTask.WmsTask", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<int?>("Aisle")
                        .HasColumnType("int")
                        .HasComment("巷道");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<string>("ContainerNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("托盘编号");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime");
                    b.Property<int?>("DodeviceId")
                        .HasColumnType("int")
                        .HasComment("堆垛机ID");
                    b.Property<int>("Dodevicetype")
                        .HasColumnType("int")
                        .HasComment("设备类型");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)")
                        .HasComment("是否禁用");
                    b.Property<int?>("IsNextTask")
                        .HasColumnType("int")
                        .HasComment("下个任务是否生成成功");
                    b.Property<bool>("IsRead")
                        .HasColumnType("tinyint(1)")
                        .HasComment("WCS是否可以读取");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId");
                    b.Property<string>("MutableParam1")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("可变变量1");
                    b.Property<string>("MutableParam2")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("可变变量2");
                    b.Property<string>("MutableParam3")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)")
                        .HasComment("可变变量3");
                    b.Property<int>("PlcTaskId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasDefaultValue(0)
                        .HasComment("任务状态");
                    b.Property<int?>("SonTaskType")
                        .HasColumnType("int")
                        .HasComment("子任务类型");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("SourceOrderNo")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("来源单据号");
                    b.Property<string>("SourcePlace")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("起始库位");
                    b.Property<int>("TaskDodeviceStatus")
                        .HasColumnType("int")
                        .HasComment("设备任务状态");
                    b.Property<int>("TaskLevel")
                        .HasColumnType("int")
                        .HasComment("任务等级");
                    b.Property<string>("TaskNo")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("任务号");
                    b.Property<int>("TaskStatus")
                        .HasColumnType("int")
                        .HasComment("任务状态");
                    b.Property<int>("TaskType")
                        .HasColumnType("int")
                        .HasComment("任务类型");
                    b.Property<string>("ToPlace")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("目标库位");
                    b.HasKey("Id");
                    b.HasIndex("ContainerNo");
                    b.HasIndex("DodeviceId");
                    b.HasIndex("IsRead");
                    b.HasIndex("Sort");
                    b.HasIndex("SourceOrderNo");
                    b.HasIndex("SourcePlace");
                    b.HasIndex("TaskNo")
                        .IsUnique();
                    b.HasIndex("TaskStatus");
                    b.HasIndex("TaskType");
                    b.HasIndex("ToPlace");
                    b.ToTable("scms_wmstasks", (string)null);
                    b.HasComment("任务表");
                });
#pragma warning restore 612, 618
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/20250515034921_InitialCreate17.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMS.Plugin.HIAWms.MySQL.Migrations
{
    public partial class InitialCreate17 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropIndex(
                name: "IX_scms_wmsmaterials_MaterialType",
                table: "scms_wmsmaterials");
            migrationBuilder.DropColumn(
                name: "MaterialType",
                table: "scms_wmsmaterials");
            migrationBuilder.AddColumn<string>(
                name: "MaterialTypeCode",
                table: "scms_wmsmaterials",
                type: "varchar(20)",
                maxLength: 20,
                nullable: true,
                comment: "物料类型编码")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.AddColumn<string>(
                name: "MaterialTypeDesc",
                table: "scms_wmsmaterials",
                type: "varchar(20)",
                maxLength: 20,
                nullable: true,
                comment: "物料类型")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateTable(
                name: "scms_wmsmaterialtype",
                columns: table => new
                {
                    Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
                    MaterialTypeDesc = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false, comment: "类型描述")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    MaterialTypeCode = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false, comment: "类型编码")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "创建时间"),
                    CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, comment: "创建人ID", collation: "ascii_general_ci"),
                    LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "最后修改时间"),
                    LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, comment: "最后修改人ID", collation: "ascii_general_ci"),
                    IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false, comment: "是否已删除"),
                    DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, comment: "删除人ID", collation: "ascii_general_ci"),
                    DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "删除时间"),
                    CreatorName = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    LastModifierName = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    OperationRemark = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    DeleteRemark = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    Sort = table.Column<int>(type: "int", nullable: false),
                    Remark = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true, comment: "备注")
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    IsDisabled = table.Column<bool>(type: "tinyint(1)", nullable: true),
                    ExtraField1 = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraField2 = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4"),
                    ExtraField3 = table.Column<string>(type: "longtext", nullable: true)
                        .Annotation("MySql:CharSet", "utf8mb4")
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_scms_wmsmaterialtype", x => x.Id);
                },
                comment: "物料类型表")
                .Annotation("MySql:CharSet", "utf8mb4");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_MaterialTypeCode",
                table: "scms_wmsmaterials",
                column: "MaterialTypeCode");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterialtype_MaterialTypeCode",
                table: "scms_wmsmaterialtype",
                column: "MaterialTypeCode",
                unique: true);
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterialtype_MaterialTypeDesc",
                table: "scms_wmsmaterialtype",
                column: "MaterialTypeDesc");
        }
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "scms_wmsmaterialtype");
            migrationBuilder.DropIndex(
                name: "IX_scms_wmsmaterials_MaterialTypeCode",
                table: "scms_wmsmaterials");
            migrationBuilder.DropColumn(
                name: "MaterialTypeCode",
                table: "scms_wmsmaterials");
            migrationBuilder.DropColumn(
                name: "MaterialTypeDesc",
                table: "scms_wmsmaterials");
            migrationBuilder.AddColumn<int>(
                name: "MaterialType",
                table: "scms_wmsmaterials",
                type: "int",
                nullable: false,
                defaultValue: 0,
                comment: "物料类型(枚举值)");
            migrationBuilder.CreateIndex(
                name: "IX_scms_wmsmaterials_MaterialType",
                table: "scms_wmsmaterials",
                column: "MaterialType");
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Migrations/CMSPluginDbContextModelSnapshot.cs
@@ -21,6 +21,115 @@
                .HasAnnotation("ProductVersion", "6.0.16")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.MaterialType.WmsMaterialType", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");
                    b.Property<string>("ConcurrencyStamp")
                        .IsConcurrencyToken()
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)")
                        .HasColumnName("ConcurrencyStamp");
                    b.Property<DateTime>("CreationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("CreationTime")
                        .HasComment("创建时间");
                    b.Property<Guid?>("CreatorId")
                        .HasColumnType("char(36)")
                        .HasColumnName("CreatorId")
                        .HasComment("创建人ID");
                    b.Property<string>("CreatorName")
                        .HasColumnType("longtext");
                    b.Property<string>("DeleteRemark")
                        .HasColumnType("longtext");
                    b.Property<Guid?>("DeleterId")
                        .HasColumnType("char(36)")
                        .HasColumnName("DeleterId")
                        .HasComment("删除人ID");
                    b.Property<DateTime?>("DeletionTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("DeletionTime")
                        .HasComment("删除时间");
                    b.Property<string>("ExtraField1")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraField2")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraField3")
                        .HasColumnType("longtext");
                    b.Property<string>("ExtraProperties")
                        .HasColumnType("longtext")
                        .HasColumnName("ExtraProperties");
                    b.Property<bool>("IsDeleted")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("tinyint(1)")
                        .HasDefaultValue(false)
                        .HasColumnName("IsDeleted")
                        .HasComment("是否已删除");
                    b.Property<bool?>("IsDisabled")
                        .HasColumnType("tinyint(1)");
                    b.Property<DateTime?>("LastModificationTime")
                        .HasColumnType("datetime(6)")
                        .HasColumnName("LastModificationTime")
                        .HasComment("最后修改时间");
                    b.Property<Guid?>("LastModifierId")
                        .HasColumnType("char(36)")
                        .HasColumnName("LastModifierId")
                        .HasComment("最后修改人ID");
                    b.Property<string>("LastModifierName")
                        .HasColumnType("longtext");
                    b.Property<string>("MaterialTypeCode")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)")
                        .HasComment("类型编码");
                    b.Property<string>("MaterialTypeDesc")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)")
                        .HasComment("类型描述");
                    b.Property<string>("OperationRemark")
                        .HasColumnType("longtext");
                    b.Property<string>("Remark")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int");
                    b.HasKey("Id");
                    b.HasIndex("MaterialTypeCode")
                        .IsUnique();
                    b.HasIndex("MaterialTypeDesc");
                    b.ToTable("scms_wmsmaterialtype", (string)null);
                    b.HasComment("物料类型表");
                });
            modelBuilder.Entity("CMS.Plugin.HIAWms.Domain.WmsAreas.WmsArea", b =>
                {
                    b.Property<Guid>("Id")
@@ -1133,9 +1242,15 @@
                        .HasColumnType("varchar(64)")
                        .HasComment("材质(如:304不锈钢)");
                    b.Property<int>("MaterialType")
                        .HasColumnType("int")
                        .HasComment("物料类型(枚举值)");
                    b.Property<string>("MaterialTypeCode")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("物料类型编码");
                    b.Property<string>("MaterialTypeDesc")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)")
                        .HasComment("物料类型");
                    b.Property<decimal>("OuterDiameter")
                        .HasColumnType("decimal(18,2)")
@@ -1192,7 +1307,7 @@
                    b.HasIndex("MaterialNo")
                        .IsUnique();
                    b.HasIndex("MaterialType");
                    b.HasIndex("MaterialTypeCode");
                    b.HasIndex("PurchaseType");
HIAWms/server/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat
@@ -1,5 +1,5 @@
cd ../
dotnet ef migrations add InitialCreate16 -c CMSPluginDbContext -o Migrations
dotnet ef migrations add InitialCreate17 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update1 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update2 -c CMSPluginDbContext -o Migrations
::dotnet ef migrations add Update3 -c CMSPluginDbContext -o Migrations
HIAWms/server/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs
@@ -45,6 +45,7 @@
        builder.ConfigureWmsMaterialContainer();
        builder.ConfigureWmsInOutStockOrder();
        builder.ConfigureWmsInOutStockOrderDetail();
        builder.ConfigureWmsMaterialType();
        /* Configure your own tables/entities inside here */
HIAWms/server/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs
@@ -45,6 +45,7 @@
        builder.ConfigureWmsMaterialContainer();
        builder.ConfigureWmsInOutStockOrder();
        builder.ConfigureWmsInOutStockOrderDetail();
        builder.ConfigureWmsMaterialType();
        /* Configure your own tables/entities inside here */
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialTypeController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,216 @@
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Framework.AspNetCore.Users;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MiniExcelLibs;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.HIAWms.Controller
{
    /// <summary>
    /// ç‰©æ–™l类型信息服务
    /// </summary>
    [ApiController]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/HIAWms/[controller]")]
    public class WmsMaterialTypeController : ControllerBase
    {
        private readonly IWmsMaterialTypeAppService _WmsMaterialTypeAppService;
        private readonly ICurrentUser _currentUser;
        /// <summary>
        /// Initializes a new instance of the <see cref="WmsMaterialTypeController"/> class.
        /// </summary>
        /// <param name="WmsMaterialTypeAppService">The WmsMaterialType application service.</param>
        public WmsMaterialTypeController(IWmsMaterialTypeAppService WmsMaterialTypeAppService, ICurrentUser currentUser)
        {
            _WmsMaterialTypeAppService = WmsMaterialTypeAppService;
            _currentUser = currentUser;
        }
        /// <summary>
        /// èŽ·å–ç‰©æ–™l类型信息
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        [HttpGet]
        [Route("{id}")]
        public virtual Task<WmsMaterialTypeDto> GetAsync(Guid id)
        {
            return _WmsMaterialTypeAppService.GetAsync(id);
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–ç‰©æ–™l类型信息的列表.
        /// </summary>
        /// <param name="input">查询参数</param>
        /// <returns></returns>
        [HttpGet]
        [Route("Page")]
        public virtual Task<PagedResultDto<WmsMaterialTypeDto>> GetListAsync([FromQuery] GetWmsMaterialTypeInput input)
        {
            return _WmsMaterialTypeAppService.GetListAsync(input);
        }
        /// <summary>
        /// åˆ›å»ºç‰©æ–™l类型信息
        /// </summary>
        /// <param name="input">创建参数</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        public virtual Task<WmsMaterialTypeDto> CreateAsync(WmsMaterialTypeCreateDto input)
        {
            input.CreatorName = _currentUser.UserAccount;//创建人
            return _WmsMaterialTypeAppService.CreateAsync(input);
        }
        /// <summary>
        /// æ›´æ–°ç‰©æ–™l类型信息
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <param name="input">更新参数</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPut]
        [Route("{id}")]
        public virtual Task<WmsMaterialTypeDto> UpdateAsync(Guid id, WmsMaterialTypeUpdateDto input)
        {
            input.LastModifierName = _currentUser.UserAccount;//修改人
            return _WmsMaterialTypeAppService.UpdateAsync(id, input);
        }
        /// <summary>
        /// å…‹éš†ç‰©æ–™l类型信息
        /// </summary>
        /// <param name="ids">Id集合</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        [Route("Clone")]
        public virtual Task<List<WmsMaterialTypeDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
        {
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            return _WmsMaterialTypeAppService.CloneAsync(ids, myCurrentUser);
        }
        /// <summary>
        /// åˆ é™¤ç‰©æ–™l类型信息
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            //return _wmsMaterialAppService.DeleteAsync(id,myCurrentUser);//逻辑删除
            return _wmsMaterialAppService.DeletePermanentlyAsync(id, myCurrentUser);//物理删除
        }
        /// <summary>
        /// æ‰¹é‡åˆ é™¤ç‰©æ–™l类型信息
        /// </summary>
        /// <param name="ids">主键ID集合</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            // return _wmsMaterialAppService.DeleteManyAsync(ids,myCurrentUser);//逻辑删除
            return _wmsMaterialAppService.BatchDeletePermanentlyAsync(ids, myCurrentUser);//物理删除
        }
        /// <summary>
        /// è°ƒæ•´æŽ’序物料l类型信息
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <returns></returns>
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
        {
            return _WmsMaterialTypeAppService.AdjustSortAsync(id, sort);
        }
        /// <summary>
        /// å¯¼å…¥ç‰©æ–™l类型信息
        /// </summary>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("Import")]
        public virtual async Task<IActionResult> ImportAsync(IFormFile file)
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Seek(0L, SeekOrigin.Begin);
            var sheetNames = stream.GetSheetNames();
            var WmsMaterialTypeRows = sheetNames.Contains("配置") ? MiniExcel.Query<WmsMaterialTypesImportModel.WmsMaterialTypeImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!WmsMaterialTypeRows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
            MyCurrentUser myCurrentUser = new MyCurrentUser()
            {
                UserAccount = _currentUser.UserAccount,
                UserId = _currentUser.UserId
            };
            await _WmsMaterialTypeAppService.ImportAsync(new WmsMaterialTypesImportModel
            {
                WmsMaterialTypes = WmsMaterialTypeRows,
           },myCurrentUser);
            return Ok();
        }
        /// <summary>
        /// å¯¼å‡ºç‰©æ–™l类型信息
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [Route("Export")]
        public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialTypeInput input)
        {
            input.MaxResultCount = int.MaxValue;
            var exportData = await _WmsMaterialTypeAppService.ExportAsync(input);
            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsMaterialType导出模板.xlsx");
            if (!System.IO.File.Exists(templatePath))
            {
                templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsMaterialType导出模板.xlsx");
            }
            var memoryStream = new MemoryStream();
            await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets);
            memoryStream.Seek(0L, SeekOrigin.Begin);
            return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" };
        }
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs
@@ -220,5 +220,17 @@
        {
            await _wmsTaskAppService.ChangeTaskToPlaceAsync(input);
        }
        /// <summary>
        /// èŽ·å–éœ€è¦æ‰§è¡Œçš„å †åž›æœºä»»åŠ¡
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("ToExecuteTask")]
        public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
        {
            return await _wmsTaskAppService.GetToExecuteTaskAsync(input);
        }
    } 
HIAWms/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialTypeµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/File/GenerateCodeConfigParamFiles/ÎïÁÏÀàÐÍÅäÖÃ.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
[表名]:scms_wmsmaterialtype
[实体类名]:WmsMaterialType
[实体类对象名]:WmsMaterialType
[页面菜单名]:物料类型
[页面菜单对象缩写]:wmsMaterialType
[表的中文注解]:物料l类型信息
[重复性校验字段]:MaterialTypeCode
[删除提示字段]:MaterialTypeCode
[模糊查询字段]:'MaterialTypeCode', 'MaterialTypeDesc',
[模糊查询字段名]:请输入物料类型编号/物料类型名称
[项目命名空间]:HIAWms
[枚举类型字段集合]:
[前端根文件夹名称]:web
[排序]:CreationTime