Ejemplo n.º 1
0
        public bool ImportPaymentData(DataTable dt, string fileName, ref string outmsg)
        {
            Dictionary <string, int> cardIds   = getItemCardId();
            Dictionary <string, int> titles    = getItemTitle();
            Dictionary <int, int>    keyValues = new Dictionary <int, int>();

            #region 项目匹配
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                DataColumn column = dt.Columns[i];
                if (titles.ContainsKey(column.ColumnName))
                {
                    keyValues.Add(i, titles[column.ColumnName]);
                }
            }
            #endregion

            using (EntityContext context = BlueFramework.Blood.Session.CreateContext())
            {
                try
                {
                    context.BeginTransaction();
                    //判断是否已经入库
                    List <InsuranceInfo> list = context.SelectList <InsuranceInfo>("hr.insurance.findInsuranceByTitle", fileName);
                    if (list.Count > 0)
                    {
                        outmsg += "文件:" + fileName + "已上传!";
                        return(false);
                    }
                    //入库导入主表
                    InsuranceInfo ii = new InsuranceInfo();
                    ii.Title      = fileName;
                    ii.CreatorId  = UserContext.CurrentUser.UserId;
                    ii.CreateTime = DateTime.Now.ToShortDateString();
                    ii.ImportType = 2;
                    context.Save <InsuranceInfo>("hr.insurance.insertInsurance", ii);
                    int rowIndex = 0;
                    int passRows = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        rowIndex++;
                        //入库导入详细表
                        InsuranceDetailInfo idi = new InsuranceDetailInfo();
                        idi.ImportId   = ii.ImportId;
                        idi.PayMonth   = row["发放年月"].ToString();
                        idi.PersonName = row["姓名"].ToString().Trim();
                        idi.ImportType = 2;
                        string cardId = row["身份证"].ToString().ToLower() + "." + idi.PersonName;
                        #region 身份证判断
                        if (cardIds.ContainsKey(cardId))
                        {
                            idi.PersonId = cardIds[cardId];
                            passRows++;
                        }
                        else
                        {
                            //未找到人员,忽略该行
                            outmsg += string.Format("第{0}行{1}人员的身份证号码和姓名不匹配, ", rowIndex, idi.PersonName);
                            continue;
                        }
                        #endregion
                        foreach (var columnindex in keyValues.Keys)
                        {
                            if (row[columnindex] == null || string.IsNullOrEmpty(row[columnindex].ToString()))
                            {
                                continue;
                            }
                            InsuranceDetailInfo item = idi.Clone();
                            item.ItemId           = keyValues[columnindex];
                            item.PersonPayValue   = decimal.Parse(row[columnindex].ToString());
                            item.ImportColumnName = dt.Columns[columnindex].Caption;
                            context.Save <InsuranceDetailInfo>("hr.insurance.insertInsuranceDetail", item);
                        }
                    }
                    context.Commit();
                    outmsg = string.Format("Excel一共{0}行,导入成功{1}行。{2}", dt.Rows.Count, passRows, outmsg);
                    return(true);
                }
                catch (Exception ex)
                {
                    outmsg += "保存失败," + ex.Message;
                    context.Rollback();
                    return(false);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保险导入
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="fileName"></param>
        /// <param name="outmsg"></param>
        /// <returns></returns>
        public bool ImportInsurance(DataTable dt, string fileName, ref string outmsg)
        {
            Dictionary <string, int> cardIds = getItemCardId();
            Dictionary <string, int> titles  = getItemTitle();

            //Dictionary<string, int> thirddic = getThirdItem();
            using (EntityContext context = BlueFramework.Blood.Session.CreateContext())
            {
                try
                {
                    context.BeginTransaction();
                    //判断是否已经入库
                    List <InsuranceInfo> list = context.SelectList <InsuranceInfo>("hr.insurance.findInsuranceByTitle", fileName);
                    if (list.Count > 0)
                    {
                        outmsg += "文件:" + fileName + "已上传!";
                        return(false);
                    }
                    //入库导入主表
                    InsuranceInfo ii = new InsuranceInfo();
                    ii.Title      = fileName;
                    ii.CreatorId  = UserContext.CurrentUser.UserId;
                    ii.CreateTime = DateTime.Now.ToShortDateString();
                    ii.ImportType = 1;
                    context.Save <InsuranceInfo>("hr.insurance.insertInsurance", ii);
                    int rowIndex = 0;
                    int passRows = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        rowIndex++;
                        //入库导入详细表
                        InsuranceDetailInfo idi = new InsuranceDetailInfo();
                        idi.ImportId         = ii.ImportId;
                        idi.PayMonth         = row["计划月度"].ToString();
                        idi.PersonName       = row["个人姓名"].ToString().Trim();
                        idi.PersonPayValue   = decimal.Parse(row["个人缴存"].ToString());
                        idi.CompanyPayValue  = decimal.Parse(row["单位缴存"].ToString());
                        idi.ImportColumnName = row["险种"].ToString();
                        string cardId = row["身份证号码"].ToString().ToLower() + "." + idi.PersonName;
                        if (cardIds.ContainsKey(cardId))
                        {
                            idi.PersonId = cardIds[cardId];
                            passRows++;
                        }
                        else
                        {
                            //未找到人员,忽略该行
                            outmsg += string.Format("第{0}行 {1} 人员的身份证号码和姓名不匹配, ", rowIndex, idi.PersonName);
                            continue;
                        }
                        if (titles.ContainsKey(row["险种"].ToString()))
                        {
                            idi.ItemId = titles[row["险种"].ToString()];
                        }
                        else
                        {
                            //值错误,不入库
                            outmsg += "第" + dt.Rows.IndexOf(row) + "行险种不匹配!";
                            context.Rollback();
                            return(false);
                        }
                        context.Save <InsuranceDetailInfo>("hr.insurance.insertInsuranceDetail", idi);
                    }
                    context.Commit();
                    outmsg = string.Format("Excel中一共{0}行,导入成功{1}行。{2}", dt.Rows.Count, passRows, outmsg);
                    return(true);
                }
                catch (Exception ex)
                {
                    outmsg += "服务器内部错误,请联系管理员:" + ex.Message;
                    context.Rollback();
                    return(false);
                }
            }
        }