예제 #1
0
        public JsonResult MailSendingHandler()
        {
            string mailType  = Request.Form["mailType"];
            string email     = Request.Form["email"];
            string password  = Request.Form["password"];
            string CCAddress = System.Configuration.ConfigurationManager.AppSettings["mailCCAddress"];

            var service = new HolidayTransferService();
            HolidayTransferMailResult result = new HolidayTransferMailResult();

            switch (mailType)
            {
            case "annual":
                List <UserHoliday> holidayList = JsonConvert.DeserializeObject <List <UserHoliday> >(Request.Form["staffList"]);

                Parallel.ForEach(holidayList, (item, state) =>
                {
                    if (item.TotalRemainingHours == 0 ||
                        item.PaidLeaveBeginDate > DateTime.Now ||
                        item.PaidLeaveEndDate < DateTime.Now)
                    {
                        //state.Stop();
                        return;
                    }
                    string htmlData = string.Empty;
                    try
                    {
                        htmlData = service.HolidayDataConvert2Html(item);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.StaffName);
                        result.FailureMsg.Add(ex.Message);
                        return;
                    }
                    try
                    {
                        service.MailSending(email, password, item.StaffEmail, htmlData, "annual", CCAddress);
                        result.SuccessList.Add(item.StaffName);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.StaffName);
                        result.FailureMsg.Add(ex.Message);
                    }
                });

                //foreach (UserHoliday ul in holidayList)
                //{
                //    if (ul.PaidLeaveRemainingHours == 0 ||
                //        ul.PaidLeaveBeginDate > DateTime.Now ||
                //        ul.PaidLeaveEndDate < DateTime.Now)
                //    {
                //        continue;
                //    }
                //    string htmlData = string.Empty;
                //    try
                //    {
                //        htmlData = service.HolidayDataConvert2Html(ul);
                //    }
                //    catch (Exception ex)
                //    {
                //        result.FailureList.Add(ul.StaffName);
                //        result.FailureMsg.Add(ex.Message);
                //        continue;
                //    }
                //    try
                //    {
                //        service.MailSending(email, password, ul.StaffEmail, htmlData, "annual", CCAddress);
                //        result.SuccessList.Add(ul.StaffName);
                //    }
                //    catch (Exception ex)
                //    {
                //        result.FailureList.Add(ul.StaffName);
                //        result.FailureMsg.Add(ex.Message);
                //    }
                //}
                break;

            case "transfer":
                List <UserTransferList> lutl = JsonConvert.DeserializeObject <List <UserTransferList> >(Request.Form["staffList"]);
                foreach (UserTransferList ul in lutl)
                {
                    string htmlData = string.Empty;
                    var    details  = ul.UserTransferDetail.AsEnumerable().Where(r => r.TransferRemainingTime != 0);
                    if (details.Count() == 0)
                    {
                        continue;
                    }
                    try
                    {
                        htmlData = service.TransferDataConvert2Html(ul);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(ul.StaffName);
                        result.FailureMsg.Add(ex.Message);
                        continue;
                    }
                    try
                    {
                        service.MailSending(email, password, ul.StaffEmail, htmlData, "transfer", CCAddress);
                        result.SuccessList.Add(ul.StaffName);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(ul.StaffName);
                        result.FailureMsg.Add(ex.Message);
                    }
                }
                break;

            case "radix":
                InsuranceRadix ir           = JsonConvert.DeserializeObject <InsuranceRadix>(Request.Form["staffList"]);
                string         upContent    = Request.Form["upCont"];
                string         downContent  = Request.Form["downCont"];
                var            radixService = new InsuranceService();
                foreach (var item in ir.InsuranceRadixDetails)
                {
                    string htmlData = string.Empty;
                    try
                    {
                        htmlData = radixService.RadixDataConvert2Html(item, ir.Year.ToString(), upContent, downContent);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.ChineseName);
                        result.FailureMsg.Add(ex.Message);
                        continue;
                    }
                    try
                    {
                        radixService.MailSending(email, password, item.Email, htmlData, (ir.Year + 1).ToString(), CCAddress);
                        result.SuccessList.Add(item.ChineseName);
                    }
                    catch (Exception ex)
                    {
                        result.FailureList.Add(item.ChineseName);
                        result.FailureMsg.Add(ex.Message);
                    }
                }
                break;

            default:
                result.FailureList.Add("系统错误");
                result.FailureMsg.Add("邮件类型错误,请返回重新上传文件");
                break;
            }
            return(Json(result));
        }
예제 #2
0
        /// <summary>
        /// 社保公积金缴存基数
        /// </summary>
        /// <param name="year">缴存年份</param>
        /// <returns></returns>
        public InsuranceRadixResult ReadInsuranceRadixFile(int year)
        {
            var            sheet  = this._workBook.GetSheetAt(0);
            InsuranceRadix result = new InsuranceRadix();

            if (sheet == null)
            {
                return(new InsuranceRadixResult()
                {
                    hasError = true,
                    ErrorMsg = "当前文件无工作表数据"
                });
            }
            //定位标题行
            var num      = sheet.LastRowNum;
            int startNum = -1;

            for (int i = 0; i < num + 1; i++)
            {
                IRow row = sheet.GetRow(i);
                if (row != null)
                {
                    ICell cell = sheet.GetRow(i).GetCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK);
                    if (cell != null && cell.ToString().Trim().Equals("姓名"))
                    {
                        startNum = i;
                        break;
                    }
                }
            }
            if (startNum == -1)
            {
                return(new InsuranceRadixResult()
                {
                    hasError = true,
                    ErrorMsg = "数据格式错误:当前文件无起始数据行,标题行第一列必须包含‘序号’两个字"
                });
            }
            //读取数据
            var users = UserService.GetAllUsers().ToList();

            result.Year = year;
            string errorName = string.Empty;

            try
            {
                for (int j = startNum + 1; j < sheet.LastRowNum + 1; j++)
                {
                    IRow   data = sheet.GetRow(j);
                    string name = data.GetCell(1, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString();
                    if (name == null || name.Equals(string.Empty))
                    {
                        break;
                    }
                    try
                    {
                        var user = users.Where(r => r.ChineseName == name).First();
                        if (user == null)
                        {
                            errorName = name;
                            throw new Exception("");
                        }
                        result.InsuranceRadixDetails.Add(new InsuranceRadix.UserInfo()
                        {
                            ChineseName  = name,
                            AunualIncome = double.Parse(data.GetCell(2, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString()),
                            Email        = user.EmailAddress
                        });
                    }
                    catch (Exception)
                    {
                        errorName = name;
                        throw;
                    }
                }
            }
            catch (Exception ex)
            {
                return(new InsuranceRadixResult()
                {
                    hasError = true,
                    ErrorMsg = "错误定位=>姓名:" + (string.IsNullOrWhiteSpace(errorName) ? "无" : errorName) +
                               ",错误信息:" + ex.Message,
                });
            }
            return(new InsuranceRadixResult()
            {
                hasError = false,
                ErrorMsg = "",
                result = result
            });
        }