schangxiang@126.com
2025-05-06 358e8f30447f8ba05af42b66d45ddf1a93878b6d
Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
已添加3个文件
已修改21个文件
338 ■■■■ 文件已修改
CommonDLL/CmsQueryExtensions.dll 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/components/DyForm/DyForm.tsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.module.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsTask/Controllers/WmsTaskDrawer.tsx 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/DataBaseFactory/Default/SqlServerDataBaseServiceHandle.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Model/ColumnModell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Entity/Dto模板.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass_module模板.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/EnumHelper.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/ExportHelper.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/GetEnumDescriptionUtil.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/CmsQueryExtensions.dll
Binary files differ
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs
@@ -1,4 +1,5 @@
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CmsQueryExtensions;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs
HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs
@@ -1,6 +1,7 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using CmsQueryExtensions;
using System;
using System.Collections.Generic;
using System.Linq;
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs
@@ -1,10 +1,10 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using CMS.Plugin.HIAWms.Domain.WmsAreas;
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
using CMS.Plugin.HIAWms.Domain.WmsStores;
using CmsQueryExtensions;
using System;
using System.Collections.Generic;
using System.Linq;
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs
@@ -1,21 +1,19 @@
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks;
using CMS.Plugin.HIAWms.Domain.Shared;
using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialStocks;
using CMS.Plugin.HIAWms.Domain.WmsAreas;
using CMS.Plugin.HIAWms.Domain.WmsContainers;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks;
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
using CmsQueryExtensions;
using Microsoft.Extensions.DependencyInjection;
using System.Text.Json;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
using CMS.Plugin.HIAWms.Domain.Shared.Util;
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsContainers;
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
using CMS.Plugin.HIAWms.Domain.WmsAreas;
using Volo.Abp.Uow;
using Microsoft.Extensions.DependencyInjection;
using NPOI.POIFS.Storage;
using System.Text.Json;
namespace CMS.Plugin.HIAWms.Application.Implements;
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj
@@ -21,8 +21,18 @@
    </ItemGroup>
    <ItemGroup>
      <Compile Remove="Util\EnumHelper.cs" />
      <Compile Remove="Util\ExportHelper.cs" />
      <Compile Remove="Util\GetEnumDescriptionUtil.cs" />
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
        <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.20" />
    </ItemGroup>
    <ItemGroup>
      <Folder Include="Util\" />
    </ItemGroup>
</Project>
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs
@@ -14,15 +14,16 @@
    public enum YesNoEnum
    {
        /// <summary>
        /// å¦
        /// </summary>
        [Description("否")]
        N = 0,
        /// <summary>
        /// æ˜¯
        /// </summary>
        [Description("是")]
        Y = 1,
        /// <summary>
        /// å¦
        /// </summary>
        [Description("否")]
        N = 2
    }
}
HIAWms/server/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs
@@ -12,6 +12,14 @@
    /// </summary>
    public static class ExportHelper
    {
        // æ‰¹é‡è½¬æ¢æ–¹æ³•
        public static List<Dictionary<string, object>> ConvertListToExportData<T>(IEnumerable<T> list)
        {
            return list.Select(ConvertToExportData).ToList();
        }
        // é€šç”¨è½¬æ¢æ–¹æ³•(兼容 Func<T, Dictionary<string, object>>)
        public static Dictionary<string, object> ConvertToExportData<T>(T entity)
        {
@@ -24,12 +32,6 @@
                dict[prop.Name] = FormatValue(value);
            }
            return dict;
        }
        // æ‰¹é‡è½¬æ¢æ–¹æ³•
        public static List<Dictionary<string, object>> ConvertListToExportData<T>(IEnumerable<T> list)
        {
            return list.Select(ConvertToExportData).ToList();
        }
        private static object FormatValue(object value)
@@ -47,13 +49,5 @@
            return value;
        }
        private static string GetEnumDescription(Enum value)
        {
            var fieldInfo = value.GetType().GetField(value.ToString());
            var description = fieldInfo?
                .GetCustomAttributes(typeof(DescriptionAttribute), false)
                .FirstOrDefault() as DescriptionAttribute;
            return description?.Description ?? value.ToString();
        }
    }
}
HIAWms/web/src/components/DyForm/DyForm.tsx
@@ -50,7 +50,7 @@
    },
    labelPosition: {
      type: String,
      default: 'left',
      default: 'right',
    },
    formData: {
      type: Object as PropType<{ [key: string]: any }>,
HIAWms/web/src/widgets/WmsInOutStockRecord/Controllers/WmsInOutStockRecordDrawer.tsx
@@ -16,7 +16,9 @@
import { cloneDeep } from 'lodash' 
 
export const useWmsInOutStockRecordDrawer = (props: any, ctx?: any) => { 
  const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>('wmsInOutStockRecordDrawer')
  const wmsInOutStockRecordDrawer = injectModel<WmsInOutStockRecordDrawer>(
    'wmsInOutStockRecordDrawer'
  )
  /** 
   * ç”¨æ¥å¯¹æ¯”的初始化数据 
   */ 
@@ -226,7 +228,6 @@
 EnumName: 'StockTypeEnum', 
}) 
updateFormItemOptions('stockType', stockTypeEnumEnum) 
  } 
  commonQueryEnumForFrom() 
  /** 
@@ -234,7 +235,9 @@
   */ 
  const onOpen = async () => { 
    if (current.value) { 
      const res = await wmsInOutStockRecordDrawer.getWmsInOutStockRecordDetail(current.value)
      const res = await wmsInOutStockRecordDrawer.getWmsInOutStockRecordDetail(
        current.value
      )
 
      formData.value = { 
        orderNo: res.orderNo, 
HIAWms/web/src/widgets/WmsStoreInfo/Views/Pages/WmsArea/WmsArea.module.scss
@@ -15,7 +15,7 @@
  .header {
    margin-bottom: 12px;
    display: flex;
    justify-content: flex-start;
    justify-content: flex-start !important;
    align-items: center;
  }
}
HIAWms/web/src/widgets/WmsTask/Controllers/WmsTaskDrawer.tsx
@@ -86,14 +86,14 @@
                   //disabled: disabled, 
                   placeholder: '请输入下个任务是否生成成功', 
                }, 
                {
                   label: 'WCS是否可以读取',
                   prop: 'isRead',
                   el: 'select',
                   //disabled: disabled,
                   placeholder: '请输入WCS是否可以读取',
              rules: [{required: true, message: 'WCS是否可以读取不能为空', trigger: 'blur' }],
                },
    //   {
    //      label: 'WCS是否可以读取',
    //      prop: 'isRead',
    //      el: 'select',
    //      //disabled: disabled,
    //      placeholder: '请输入WCS是否可以读取',
    // rules: [{required: true, message: 'WCS是否可以读取不能为空', trigger: 'blur' }],
    //   },
                { 
                   label: '可变变量1', 
                   prop: 'mutableParam1', 
@@ -141,7 +141,9 @@
                   prop: 'taskDodeviceStatus', 
                   //disabled: disabled, 
                   placeholder: '请输入设备任务状态', 
              rules: [{required: true, message: '设备任务状态不能为空', trigger: 'blur' }],
      rules: [
        { required: true, message: '设备任务状态不能为空', trigger: 'blur' },
      ],
                }, 
                { 
                   label: '任务等级', 
@@ -277,7 +279,6 @@
 EnumName: 'SonTaskTypeEnum', 
}) 
updateFormItemOptions('sonTaskType', sonTaskTypeEnumEnum) 
  } 
  commonQueryEnumForFrom() 
  /** 
HIAWms/web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx
@@ -10,9 +10,7 @@
import { columns } from './Config' 
import TdButton from '@/components/TdButton/TdButton' 
import { vPermission } from '@/libs/Permission/Permission' 
import {
  getWmsEnumData
} from '@/widgets/WmsTask/Models/Service/WmsTaskDrawer'
import { getWmsEnumData } from '@/widgets/WmsTask/Models/Service/WmsTaskDrawer'
import { 
  ElInput, 
  ElSelect, 
@@ -63,18 +61,15 @@
    } = useWmsTask(props, ctx) 
 
    //定义高级查询引用 
   const wmsTaskQueryDrawerRef=ref(null);
    const wmsTaskQueryDrawerRef = ref(null)
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶ 
    const queryForm = ref({ 
      searchVal: '', 
      str_searchFormInputAttrs:[]
      str_searchFormInputAttrs: [],
    }) 
    //定义整体模糊查询的列数组(注意:必须大小写跟后端的实体类属性名一致,否则会导致匹配不对的问题) 
    const _searchFormInputAttrs = ref([
     'TaskNo', 'ContainerNo'
    ]);
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/托盘编码');
    const _searchFormInputAttrs = ref(['TaskNo', 'ContainerNo'])
    const searchFormInputAttrs_Placeholder = ref('请输入任务编码/托盘编码')
 
    // åŠ¨æ€æžšä¸¾é€‰é¡¹ 
    const enumOptions = reactive({ 
@@ -107,7 +102,6 @@
  label: item.description, 
  value: item.value, 
})) 
      } catch (error) { 
        console.error('获取枚举数据失败:', error) 
      } 
@@ -119,40 +113,45 @@
    }) 
 
    // å®šä¹‰å“åº”式查询数据 
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[] });
    const _curHighQueryData = ref({
      searchVal: '',
      str_searchFormInputAttrs: [],
    })
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】) 
    const handleQueryForMain = async () => { 
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      _curHighQueryData.value.searchVal = queryForm.value.searchVal
      _curHighQueryData.value.str_searchFormInputAttrs =
        _searchFormInputAttrs.value
      tableRef.value.getList(_curHighQueryData.value) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】) 
    const handleQuery = async (extraParams = {}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = commonGetHighQueryForm(extraParams)
      commonSaveCurHighQueryData(filteredData)
      tableRef.value.getList(filteredData) 
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½® 
    const resetQuery = () => { 
      queryForm.value.searchVal = '' 
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
      queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value
    } 
     //新版的导出方法 
     const handleExport=()=>{ 
      onExport(_curHighQueryData.value);
      onExport(_curHighQueryData.value)
    } 
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³• 
    const closeQuery = (extraParams={}) => { 
      let filteredData = commonGetHighQueryForm(extraParams);
      console.log("closeQuery方法");
      console.log(filteredData);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = commonGetHighQueryForm(extraParams)
      console.log('closeQuery方法')
      console.log(filteredData)
      commonSaveCurHighQueryData(filteredData)
    } 
    //保存查询值 
    const commonSaveCurHighQueryData=(filteredData={})=>{ 
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData }
      _curHighQueryData.value.searchVal = queryForm.value.searchVal 
      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      _curHighQueryData.value.str_searchFormInputAttrs =
        _searchFormInputAttrs.value
    } 
     //获取高级查询弹出框的查询值 
     const commonGetHighQueryForm=(extraParams={})=>{ 
@@ -165,10 +164,9 @@
      ) 
      //组合模糊查询 
      filteredData.searchVal = queryForm.value.searchVal 
      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value;
      return filteredData;
      filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value
      return filteredData
    } 
 
    /** 
     * @returns è¡¨æ ¼ 
@@ -294,7 +292,11 @@
                  class={styles.formItem} 
                /> 
              </ElFormItem> 
              <IconButton type="primary" icon="search" onClick={handleQueryForMain}>
              <IconButton
                type="primary"
                icon="search"
                onClick={handleQueryForMain}
              >
                æŸ¥è¯¢ 
              </IconButton> 
              {/* <IconButton style="" icon="refresh" onClick={resetQuery}> 
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/DataBaseFactory/Default/MySqlDataBaseServiceHandle.cs
@@ -15,7 +15,7 @@
            //string strSql = $"SELECT COLUMN_NAME as ColumnName, COLUMN_TYPE as DataType, IS_NULLABLE as IsNullable, CHARACTER_MAXIMUM_LENGTH as DataLength,COLUMN_COMMENT as Description " +
            //                       $"FROM INFORMATION_SCHEMA.COLUMNS " +
            //                       $"WHERE  TABLE_NAME = '{tableName}'";
            string strSql = $"SELECT c.COLUMN_NAME as ColumnName, c.DATA_TYPE as DataType, c.IS_NULLABLE as IsNullable, c.CHARACTER_MAXIMUM_LENGTH as DataLength, c.COLUMN_COMMENT as Description, " +
            string strSql = $"SELECT c.COLUMN_NAME as ColumnName, c.DATA_TYPE as DataType, c.IS_NULLABLE as IsNullable, c.CHARACTER_MAXIMUM_LENGTH as DataLength, c.COLUMN_COMMENT as Description,c.NUMERIC_SCALE as MyPrecision, " +
                $"CASE WHEN kcu.COLUMN_NAME IS NOT NULL THEN 'true' ELSE 'false' END AS IsPrimaryKey " +
                $"FROM INFORMATION_SCHEMA.COLUMNS c " +
                $"LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu " +
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/DataBaseFactory/Default/SqlServerDataBaseServiceHandle.cs
@@ -28,7 +28,7 @@
    where ic.object_id=obj.object_id
    and ic.column_id=col.column_id
) as IsPrimaryKey,
col.Precision,
col.Precision as MyPrecision,
col.Scale 
from sys.objects obj
inner join sys.columns col
@@ -72,7 +72,7 @@
                        model = new ColumnModel();
                        if (dt.Rows[n]["Precision"].ToString() != "")
                        {
                            model.Precision = int.Parse(dt.Rows[n]["Precision"].ToString());
                            model.MyPrecision = int.Parse(dt.Rows[n]["Precision"].ToString());
                        }
                        if (dt.Rows[n]["Scale"].ToString() != "")
                        {
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Model/ColumnModell.cs
@@ -40,7 +40,7 @@
        /// </summary>
        public bool IsPrimaryKey { get; set; }
        public int Precision { get; set; }
        public int? MyPrecision { get; set; }
        public int Scale { get; set; }
    }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/AppService/AppServiceÄ£°å.txt
@@ -1,7 +1,7 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CMS.Plugin.$NameSpacePath$.Domain.Shared;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Util;
using CmsQueryExtensions;
using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Entity/DtoÄ£°å.txt
@@ -1,4 +1,5 @@
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Enums;
using CmsQueryExtensions;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass_moduleÄ£°å.txt
@@ -15,7 +15,7 @@
  .header {
    margin-bottom: 12px;
    display: flex;
    justify-content: flex-start;
    justify-content: flex-end;
    align-items: center;
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Utility/StructStrHelper.cs
@@ -85,7 +85,7 @@
                        model = new ColumnModel();
                        if (dt.Rows[n]["Precision"].ToString() != "")
                        {
                            model.Precision = int.Parse(dt.Rows[n]["Precision"].ToString());
                            model.MyPrecision = int.Parse(dt.Rows[n]["Precision"].ToString());
                        }
                        if (dt.Rows[n]["Scale"].ToString() != "")
                        {
@@ -887,7 +887,7 @@
                    case DataTypeEnum.dt_decimal:
                    case DataTypeEnum.dt_float:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType
                            + "(" + columnModel.Precision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao + "\n");
                            + "(" + columnModel.MyPrecision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao + "\n");
                        break;
                    default:
                        break;
@@ -949,7 +949,7 @@
                    case DataTypeEnum.dt_decimal:
                    case DataTypeEnum.dt_float:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType
                            + "(" + columnModel.Precision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao + "\n");
                            + "(" + columnModel.MyPrecision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao + "\n");
                        break;
                    default:
                        break;
@@ -1010,7 +1010,7 @@
                    case DataTypeEnum.dt_decimal:
                    case DataTypeEnum.dt_float:
                        sql.Append("@" + attrColumnName + "  " + columnModel.DataType
                            + "(" + columnModel.Precision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao);
                            + "(" + columnModel.MyPrecision.ToString() + "," + columnModel.Scale.ToString() + ")  " + fuhao);
                        break;
                    default:
                        break;
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/EnumHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
using System.ComponentModel;
namespace CmsQueryExtensions
{
    /// <summary>
    /// æžšä¸¾å¸®åŠ©ç±».
    /// </summary>
    public static class EnumHelper
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾.
        /// </summary>
        /// <param name="enumName"> </param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static List<EnumItem> GetEnumItems(string enumName)
        {
            // èŽ·å–å½“å‰ç¨‹åºé›†ä¸­çš„æ‰€æœ‰ç±»åž‹
            var enumType = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(a => a.GetTypes())
                .FirstOrDefault(t => t.Name == enumName && t.IsEnum);
            if (enumType == null)
            {
                throw new Exception($"枚举类型 {enumName} ä¸å­˜åœ¨");
            }
            return GetEnumItems(enumType);
        }
        /// <summary>
        /// èŽ·å–æžšä¸¾ç±»åž‹.
        /// </summary>
        /// <param name="enumType"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static List<EnumItem> GetEnumItems(Type enumType)
        {
            if (!enumType.IsEnum)
            {
                throw new Exception("提供的类型不是枚举类型");
            }
            var result = new List<EnumItem>();
            var values = Enum.GetValues(enumType);
            foreach (var value in values)
            {
                var fieldInfo = enumType.GetField(value.ToString());
                var description = fieldInfo?
                    .GetCustomAttributes(typeof(DescriptionAttribute), false)
                    .FirstOrDefault() as DescriptionAttribute;
                result.Add(new EnumItem
                {
                    Value = (int)value,
                    Name = value.ToString(),
                    Description = description?.Description ?? value.ToString(),
                });
            }
            return result;
        }
    }
    /// <summary>
    /// æžšä¸¾æè¿°.
    /// </summary>
    public class EnumItem
    {
        public int Value { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/ExportHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Threading.Tasks;
namespace CmsQueryExtensions
{
    /// <summary>
    /// å¯¼å‡ºå¸®åŠ©ç±».
    /// </summary>
    public static class ExportHelper
    {
        // æ‰¹é‡è½¬æ¢æ–¹æ³•
        public static List<Dictionary<string, object>> ConvertListToExportData<T>(IEnumerable<T> list)
        {
            return list.Select(ConvertToExportData).ToList();
        }
        // é€šç”¨è½¬æ¢æ–¹æ³•(兼容 Func<T, Dictionary<string, object>>)
        public static Dictionary<string, object> ConvertToExportData<T>(T entity)
        {
            var dict = new Dictionary<string, object>();
            if (entity == null) return dict;
            foreach (var prop in typeof(T).GetProperties())
            {
                var value = prop.GetValue(entity);
                dict[prop.Name] = FormatValue(value);
            }
            return dict;
        }
        private static object FormatValue(object value)
        {
            if (value == null) return string.Empty;
            // å¤„理枚举
            if (value is Enum enumValue)
                return GetEnumDescriptionUtil.GetEnumDescription(enumValue);
            // å¤„理布尔
            if (value is bool boolValue)
                return boolValue ? "是" : "否";
            return value;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Weben_CMS_TemplateDemo/queryExtensions/CmsQueryExtensions/Utils/GetEnumDescriptionUtil.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace CmsQueryExtensions
{
    public class GetEnumDescriptionUtil
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾çš„æè¿°
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static string GetEnumDescription(Enum enumValue)
        {
            string value = enumValue.ToString();
            if (string.IsNullOrWhiteSpace(value) || value == "0") return "";
            FieldInfo field = enumValue.GetType().GetField(value);
            object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);  //获取描述属性
            if (objs == null || objs.Length == 0)  //当描述属性没有时,直接返回名称
                return value;
            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
            return descriptionAttribute.Description;
        }
    }
}