ImportOhter.cs 5.58 KB
using HHECS.Model.ViewEntity;
using System.Collections.Generic;
using System.Data;
using System.Text.RegularExpressions;

namespace Hh.Mes.Service.WebService.Planned
{
    /// <summary>
    /// 第一步 定义模板名称 和【Excel 页签导入名一致】
    /// </summary>
    public enum ExcelName
    {
        equipment,
        equipmenttype,
        EquipmentTypePart,

        equipmentmaintainrule,
        equipmentmaintainruledetail
    }

    /// <summary>
    /// 第二步  定义表名  
    /// tableNamexxxxx       :对应数据库的表名
    /// tableNamexxxxxData   :对应数据库的表名 数据源 保存到数据的
    /// </summary>
    public class TableName : TableNameBase
    {
        /// <summary>
        /// 设备管理 数据库表名
        /// </summary>
        public static string tableNameEquipment = ExcelName.equipment.ToString();

        /// <summary>
        ///设备管理数据源  sysDicDtSource key
        /// </summary>
        public static string tableNameDataEquipment = tableNameEquipment + tableSuffix;

        /// <summary>
        /// 设备管理 excel文件名 用于信息提示
        /// </summary>
        public static string excelEquipmentChinese = "设备管理";


        /// <summary>
        /// 设备类型 数据库表名
        /// </summary>
        public static string tableNameEquipmenttype = ExcelName.equipmenttype.ToString();

        /// <summary>
        /// 设备类型数据源 sysDicDtSource key
        /// </summary>
        public static string tableNameDataEquipmenttype= tableNameEquipmenttype + tableSuffix;
        /// <summary>
        /// 设备类型  excel 文件名 用于信息提示
        /// </summary>
        public static string excelEquipmenttypeChinese = "设备类型";



        /// <summary>
        /// 设备类型部件 数据库表名
        /// </summary>
        public static string tableNameEquipmentTypePart = ExcelName.EquipmentTypePart.ToString();

        /// <summary>
        /// 设备类型部件数据源 sysDicDtSource key
        /// </summary>
        public static string tableNameDataEquipmentTypePart = tableNameEquipmentTypePart + tableSuffix;

        /// <summary>
        /// 设备类型部件  excel文件名 用于信息提示
        /// </summary>
        public static string excelEquipmentTypePartChinese = "设备类型部件";


        /// <summary>
        /// 设备规则 数据库表名
        /// </summary>
        public static string tableNameEquipmentmaintainrule = ExcelName.equipmentmaintainrule.ToString();

        /// <summary>
        /// 设备规则数据源 sysDicDtSource key
        /// </summary>
        public static string tableNameDataEquipmentmaintainrule = tableNameEquipmentmaintainrule + tableSuffix;
        /// <summary>
        /// 设备规则  excel文件名 用于信息提示
        /// </summary>
        public static string excelEquipmentmaintainruleChinese = "设备规则";



        /// <summary>
        /// 设备规则明细 数据库表名
        /// </summary>
        public static string tableNameEquipmentmaintainruledetail = ExcelName.equipmentmaintainruledetail.ToString();

        /// <summary>
        /// 设备规则明细 数据源
        /// </summary>
        public static string tableNameDataEquipmentmaintainruledetail = tableNameEquipmentmaintainruledetail + tableSuffix;
        /// <summary>
        /// 设备规则明细  excel 文件名
        /// </summary>
        public static string excelEquipmentmaintainruledetailChinese = "设备规则明细";

    }

    #region 公共类 不需要理会
    /// <summary>
    /// 数据源 公共方法只处理后缀是_source 
    /// </summary>
    public class TableNameBase
    {
        /// <summary>
        /// 数据源 后缀(_source)
        /// </summary>
        public static string tableSuffix = "_source";
    }


    /// <summary>
    /// ImportService 帮助类
    /// </summary>
    public static class ImportOhter
    {
        /// <summary>
        /// 过滤列名
        /// </summary>
        public static DataTable DtModifyColumnName(this DataTable dt, ref Response response, string ExcelName)
        {
            //查询更改列名
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                var columnName = Regex.Replace(dt.Columns[i].ColumnName, @"[^a-zA-Z1-9]", "").Trim();
                if (string.IsNullOrEmpty(columnName))
                {
                    response.Code = 500;
                    response.Message = $"{ExcelName} 列【{dt.Columns[i].ColumnName}】不存在英文 ";
                    return dt;
                }
                dt.Columns[i].ColumnName = columnName;
            }
            return dt;
        }

        /// <summary>
        /// 去重方法
        /// </summary>
        public static DataTable Distinct(this DataTable ds, string columns)
        {
            DataView dv = new DataView(ds);
            DataTable where = dv.ToTable(true, columns);
            DataTable data = ds.Clone();
            foreach (DataRow item in where.Rows)
            {
                DataRow[] dataRow = ds.Select($"{columns}='{item[columns]}'");
                data.ImportRow(dataRow[0]);
            }
            return data;
        }


        /// <summary>
        /// 获取dt所有列
        /// </summary>
        public static List<string> GetColumnsByDataTable(this DataTable dt)
        {
            var temp = new List<string>();
            foreach (DataColumn c in dt.Columns)
            {
                temp.Add(c.ColumnName);
            }
            return temp;
        }
    } 
    #endregion
}