public List <ListCompareTable> InportOriginData(DataTable dt, int nNowYear, long lProvinceID, long lGxID)
        {
            List <ListCompareTable> listReturn   = new List <ListCompareTable>();
            List <T_tddw_Origin>    OriginModels = InportSomeTddwOriginTable(dt, nNowYear, lProvinceID);
            TableStatusManage       statusManage = new TableStatusManage();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //T_tddw_Origin OriginModel = InportOneTddwOriginTable(dr, nNowYear, lProvinceID);
                long lNowRelationID = Convert.ToInt64(OriginModels[i].RelationID);
                if (lNowRelationID != 0) //原始表中已经存在,直接取用
                {
                    ListCompareTable oneTable = new ListCompareTable();
                    oneTable.sOldID    = dt.Rows[i]["TDDWDM"].ToString();
                    oneTable.lNewID    = lNowRelationID;
                    oneTable.lOriginID = OriginModels[i].ID;
                    listReturn.Add(oneTable);
                }
                else
                {
                    long   lNewID = 0;
                    T_tddw obj    = getOneMainRecord(lGxID, OriginModels[i]);
                    string MC     = GetOneStrValue(dt.Rows[i], "TDDWMC");
                    if (obj == null) //目前主表中不存在
                    {
                        while (!statusManage.BeginUpdate <T_tddw>())
                        {
                            Random ra = new Random();
                            Thread.Sleep(ra.Next(100, 1000));
                        }
                        obj = getOneMainRecord(lGxID, OriginModels[i]);
                        if (obj == null)  //还是不存在
                        {
                            T_tddw model = new T_tddw();
                            model.Name   = MC;
                            model.Code   = GetOneStrValue(dt.Rows[i], "TDDWDM");
                            model.Remark = GetOneStrValue(dt.Rows[i], "BZ");

                            ListCompareTable oneCompare = GetCompareList(PCDM_list, GetOneStrValue(dt.Rows[i], "PCDM", CosDataBase.LONGINT_TYPE));
                            if (oneCompare != null)
                            {
                                model.PcdmOrigin = oneCompare.lOriginID;
                                model.Pcdm       = oneCompare.lNewID;
                            }

                            oneCompare = GetCompareList(KLDM_list, GetOneStrValue(dt.Rows[i], "KLDM", CosDataBase.LONGINT_TYPE));
                            if (oneCompare != null)
                            {
                                model.KldmOrigin = oneCompare.lOriginID;
                                model.Kldm       = oneCompare.lNewID;
                            }

                            oneCompare = GetCompareList(JHXZDM_list, GetOneStrValue(dt.Rows[i], "JHXZDM", CosDataBase.LONGINT_TYPE));
                            if (oneCompare != null)
                            {
                                model.JhxzdmOrigin = oneCompare.lOriginID;
                                model.Jhxzdm       = oneCompare.lNewID;
                            }

                            oneCompare = GetCompareList(JHLBDM_list, GetOneStrValue(dt.Rows[i], "JHLBDM", CosDataBase.LONGINT_TYPE));
                            if (oneCompare != null)
                            {
                                model.JhlbdmOrigin = oneCompare.lOriginID;
                                model.Jhlbdm       = oneCompare.lNewID;
                            }

                            model.Csmbh = GetOneStrValue(dt.Rows[i], "CSMBH");
                            model.Tag   = GetOneStrValue(dt.Rows[i], "TAG");
                            model.GxID  = lGxID;

                            model.JoinNames = model.Name;

                            string[] EditColumns = { "Name",         "Code",   "Remark",       "PcdmOrigin", "Pcdm",  "KldmOrigin", "Kldm",
                                                     "JhxzdmOrigin", "Jhxzdm", "JhlbdmOrigin", "Jhlbdm",     "Csmbh", "Tag",        "GxID", "JoinNames" };

                            lNewID = SaveOneSimpleRecord(model, "tddwTable", EditColumns);
                            statusManage.EndUpdate <T_tddw>();
                            ListCompareTable oneTable = new ListCompareTable();
                            oneTable.sOldID    = GetOneStrValue(dt.Rows[i], "TDDWDM");
                            oneTable.lNewID    = lNewID;
                            oneTable.lOriginID = OriginModels[i].ID;
                            listReturn.Add(oneTable);
                        }
                        else
                        {
                            if (obj.DelFlag)
                            {
                                lNewID = obj.JoinID;
                            }
                            else
                            {
                                lNewID = obj.ID;
                            }
                            ListCompareTable oneTable = new ListCompareTable();
                            oneTable.sOldID    = GetOneStrValue(dt.Rows[i], "TDDWDM");
                            oneTable.lNewID    = lNewID;
                            oneTable.lOriginID = OriginModels[i].ID;
                            listReturn.Add(oneTable);
                        }
                    }
                    else //目前主表中存在
                    {
                        if (obj.DelFlag)
                        {
                            lNewID = obj.JoinID;
                        }
                        else
                        {
                            lNewID = obj.ID;
                        }
                        ListCompareTable oneTable = new ListCompareTable();
                        oneTable.sOldID    = GetOneStrValue(dt.Rows[i], "TDDWDM");
                        oneTable.lNewID    = lNewID;
                        oneTable.lOriginID = OriginModels[i].ID;
                        listReturn.Add(oneTable);
                    }
                    ////不管存在与否,都需修改原始表中相应的RelationID
                    string[] EditColumn = { "RelationID" };
                    OriginModels[i].GetType().GetProperty("RelationID").SetValue(OriginModels[i], lNewID, null);
                    SaveOneRecord(OriginModels[i], EditColumn);
                }
            }
            return(listReturn);
        }
        /// <summary>
        /// 导入基础数据表的公共函数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="T1"></typeparam>
        /// <param name="dataTable"></param>
        /// <param name="nYear"></param>
        /// <param name="lProvinceID"></param>
        /// <param name="keyword"></param>
        /// <param name="mainColumns"></param>
        /// <param name="moreColumns"></param>
        /// <param name="moreColumnTypes"></param>
        /// <returns></returns>
        public List <ListCompareTable> InportSimpleTableOriginData <T, T1>(DataTable dataTable, int nYear, long lProvinceID, string keyword, string[] mainColumns = null, string[] moreColumns = null, int[] moreColumnTypes = null) where T : class, new() where T1 : class, new()
        {
            List <ListCompareTable> listReturn = new List <ListCompareTable>();

            try
            {
                if (dataTable != null)
                {
                    DataView dataView = dataTable.DefaultView;
                    if (mainColumns == null)
                    {
                        mainColumns    = new string[2];
                        mainColumns[0] = dataTable.Columns[0].ColumnName;
                        mainColumns[1] = dataTable.Columns[1].ColumnName;
                    }
                    DataTable         dt           = dataView.ToTable(true, mainColumns[0], mainColumns[1]);
                    List <T1>         OriginModels = InportSomeRowsOriginTable <T1>(dt, nYear, lProvinceID, mainColumns, moreColumns, moreColumnTypes);
                    TableStatusManage statusManage = new TableStatusManage();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        long lNowRelationID = Convert.ToInt64(OriginModels[i].GetType().GetProperty("RelationID").GetValue(OriginModels[i], null));
                        if (lNowRelationID == 0) //原始表中新加入的字段
                        {
                            long lNewID = 0;
                            T    obj    = getOneMainRecord <T>(dt.Rows[i][1].ToString());
                            if (obj == null) //目前主表中不存在
                            {
                                while (!statusManage.BeginUpdate <T>())
                                {
                                    Random ra = new Random();
                                    Thread.Sleep(ra.Next(100, 1000));
                                }
                                obj = getOneMainRecord <T>(dt.Rows[i][1].ToString());
                                if (obj == null)  //还是不存在
                                {
                                    int num = 4;
                                    if (moreColumns != null)
                                    {
                                        num = num + moreColumns.Length;
                                    }
                                    string[] EditColumns = new string[num];
                                    EditColumns[0] = "Name";
                                    EditColumns[1] = "Remark";
                                    EditColumns[2] = "Code";
                                    EditColumns[3] = "JoinNames";
                                    if (moreColumns != null)
                                    {
                                        for (int j = 0; j < moreColumns.Length; j++)
                                        {
                                            EditColumns[j + 4] = moreColumns[j];
                                        }
                                    }

                                    T model = new T();
                                    model.GetType().GetProperty("Name").SetValue(model, dt.Rows[i][1].ToString(), null);
                                    model.GetType().GetProperty("Code").SetValue(model, dt.Rows[i][0].ToString(), null);
                                    model.GetType().GetProperty("JoinNames").SetValue(model, dt.Rows[i][1].ToString(), null);

                                    if ((dt.Columns.Count > 2) && (dt.Columns[2].ColumnName == "BZ"))
                                    {
                                        model.GetType().GetProperty("Remark").SetValue(model, dt.Rows[i][2].ToString(), null);
                                    }
                                    model = ArrangeMoreColumns(moreColumns, moreColumnTypes, dt.Rows[i], model);

                                    lNewID = SaveOneSimpleRecord(model, keyword, EditColumns);
                                    statusManage.EndUpdate <T>();
                                    ListCompareTable oneTable = new ListCompareTable();
                                    oneTable.sOldID    = dt.Rows[i][0].ToString();
                                    oneTable.lNewID    = lNewID;
                                    oneTable.lOriginID = Convert.ToInt64(OriginModels[i].GetType().GetProperty("ID").GetValue(OriginModels[i], null));
                                    listReturn.Add(oneTable);
                                }
                                else //主表中存在了
                                {
                                    statusManage.EndUpdate <T>();
                                    lNewID = Convert.ToInt64(obj.GetType().GetProperty("ID").GetValue(obj, null));
                                    ListCompareTable oneTable = new ListCompareTable();
                                    oneTable.sOldID    = dt.Rows[i][0].ToString();
                                    oneTable.lNewID    = lNewID;
                                    oneTable.lOriginID = Convert.ToInt64(OriginModels[i].GetType().GetProperty("ID").GetValue(OriginModels[i], null));
                                    listReturn.Add(oneTable);
                                }
                            }
                            else //目前主表中存在
                            {
                                lNewID = Convert.ToInt64(obj.GetType().GetProperty("ID").GetValue(obj, null));
                                ListCompareTable oneTable = new ListCompareTable();
                                oneTable.sOldID    = dt.Rows[i][0].ToString();
                                oneTable.lNewID    = lNewID;
                                oneTable.lOriginID = Convert.ToInt64(OriginModels[i].GetType().GetProperty("ID").GetValue(OriginModels[i], null));
                                listReturn.Add(oneTable);
                            }
                            //不管存在与否,都需修改原始表中相应的RelationID
                            //string[] EditColumn = { "RelationID" };
                            OriginModels[i].GetType().GetProperty("RelationID").SetValue(OriginModels[i], lNewID, null);
                            //SaveOneRecord(OriginModels[i], EditColumn);
                        }
                        else //原始表中已有相关字段,直接取用
                        {
                            ListCompareTable oneTable = new ListCompareTable();
                            oneTable.sOldID    = dt.Rows[i][0].ToString();
                            oneTable.lNewID    = lNowRelationID;
                            oneTable.lOriginID = Convert.ToInt64(OriginModels[i].GetType().GetProperty("ID").GetValue(OriginModels[i], null));
                            listReturn.Add(oneTable);
                        }
                    }
                    SaveManyRecords(OriginModels);
                }
                return(listReturn);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Exemple #3
0
        public List <ListCompareTable> InportOriginData(DataTable dt, int nNowYear, long lProvinceID, long lParentDepartmentID, long GxID)
        {
            List <ListCompareTable> listReturn = new List <ListCompareTable>();

            if (dt != null)
            {
                List <Td_zydh_Origin> OriginModels = InportSomeRowsOriginTable <Td_zydh_Origin>(dt, nNowYear, lProvinceID);
                TableStatusManage     statusManage = new TableStatusManage();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //先导入原始表
                    long lNowRelationID = Convert.ToInt64(OriginModels[i].RelationID);
                    if (lNowRelationID != 0) //原始表中已经存在,直接取用
                    {
                        ListCompareTable oneTable = new ListCompareTable();
                        oneTable.sOldID    = dt.Rows[i]["ZYDH"].ToString();
                        oneTable.lNewID    = OriginModels[i].RelationID;
                        oneTable.lOriginID = OriginModels[i].ID;
                        listReturn.Add(oneTable);
                    }
                    else
                    {
                        long    lNewID = 0;
                        Td_zydh obj    = getOneMainRecord(lParentDepartmentID, OriginModels[i]);
                        if (obj == null) //目前主表中不存在
                        {
                            while (!statusManage.BeginUpdate <Td_zydh>())
                            {
                                Random ra = new Random();
                                Thread.Sleep(ra.Next(100, 1000));
                            }
                            obj = getOneMainRecord(lParentDepartmentID, OriginModels[i]);
                            if (obj == null)  //还是不存在
                            {
                                Td_zydh model = new Td_zydh();
                                model.Name   = GetOneStrValue(dt.Rows[i], "ZYMC");
                                model.Code   = GetOneStrValue(dt.Rows[i], "ZYDH");
                                model.Remark = GetOneStrValue(dt.Rows[i], "BZ");

                                ListCompareTable oneCompare = GetCompareList(CCDM_list, GetOneStrValue(dt.Rows[i], "CCDM", CosDataBase.LONGINT_TYPE));
                                if (oneCompare != null)
                                {
                                    model.CcdmOrigin = oneCompare.lOriginID;
                                    model.Ccdm       = oneCompare.lNewID;
                                }

                                oneCompare = GetCompareList(KLDM_list, GetOneStrValue(dt.Rows[i], "KLDM", CosDataBase.LONGINT_TYPE));
                                if (oneCompare != null)
                                {
                                    model.KldmOrigin = oneCompare.lOriginID;
                                    model.Kldm       = oneCompare.lNewID;
                                }

                                string sXzdm = GetXzdm(dt.Rows[i]);
                                oneCompare = GetCompareList(XZDM_list, sXzdm);
                                if (oneCompare != null)
                                {
                                    model.XzdmOrigin = oneCompare.lOriginID;
                                    model.Xzdm       = oneCompare.lNewID;
                                }

                                oneCompare = GetCompareList(ZYLBDM_list, GetOneStrValue(dt.Rows[i], "ZYLBDM", CosDataBase.LONGINT_TYPE));
                                if (oneCompare != null)
                                {
                                    model.ZylbdmOrigin = oneCompare.lOriginID;
                                    model.Zylbdm       = oneCompare.lNewID;
                                }

                                model.Zkfx               = GetOneStrValue(dt.Rows[i], "ZKFX");
                                model.Tjsxbz             = GetOneStrValue(dt.Rows[i], "TJSXBZ");
                                model.Sfks               = Convert.ToBoolean(GetOneStrValue(dt.Rows[i], "SFKZ", CosDataBase.BOOLEAN_TYPE));
                                model.Sfbz               = Convert.ToInt32(GetOneStrValue(dt.Rows[i], "Sfbz", CosDataBase.INT_TYPE));
                                model.Bxdd               = GetOneStrValue(dt.Rows[i], "BXDD");
                                model.Wyyz               = GetOneStrValue(dt.Rows[i], "WYYZ");
                                model.ParentDepartmentID = lParentDepartmentID;
                                model.GxID               = GxID;
                                model.JoinNames          = model.Name;
                                string[] EditColumns = { "Name",       "Code", "Remark",       "CcdmOrigin", "Ccdm", "KldmOrigin", "Kldm",
                                                         "XzdmOrigin", "Xzdm", "ZylbdmOrigin", "Zylbdm",     "Zkfx", "Tjsxbz",     "Sfks","Sfbz","Bxdd", "Wyyz", "ParentDepartmentID", "GxID", "JoinNames" };
                                lNewID = SaveOneSimpleRecord(model, "zydhTable", EditColumns);
                                statusManage.EndUpdate <Td_zydh>();
                                ListCompareTable oneTable = new ListCompareTable();
                                oneTable.sOldID    = dt.Rows[i]["ZYDH"].ToString();
                                oneTable.lNewID    = lNewID;
                                oneTable.lOriginID = OriginModels[i].ID;
                                listReturn.Add(oneTable);
                            }
                            else //目前主表中存在
                            {
                                if (obj.DelFlag)
                                {
                                    lNewID = obj.JoinID;
                                }
                                else
                                {
                                    lNewID = obj.ID;
                                }

                                ListCompareTable oneTable = new ListCompareTable();
                                oneTable.sOldID    = dt.Rows[i]["ZYDH"].ToString();
                                oneTable.lNewID    = lNewID;
                                oneTable.lOriginID = OriginModels[i].ID;
                                listReturn.Add(oneTable);
                            }
                        }
                        else //目前主表中存在
                        {
                            if (obj.DelFlag)
                            {
                                lNewID = obj.JoinID;
                            }
                            else
                            {
                                lNewID = obj.ID;
                            }

                            ListCompareTable oneTable = new ListCompareTable();
                            oneTable.sOldID    = dt.Rows[i]["ZYDH"].ToString();
                            oneTable.lNewID    = lNewID;
                            oneTable.lOriginID = OriginModels[i].ID;
                            listReturn.Add(oneTable);
                        }
                        ////不管存在与否,都需修改原始表中相应的RelationID
                        string[] EditColumn = { "RelationID" };
                        OriginModels[i].RelationID = lNewID;
                        SaveOneRecord(OriginModels[i], EditColumn);
                    }
                }
            }
            return(listReturn);
        }