示例#1
0
        /// <summary>
        /// 根据单据类型编号,生成单号
        /// </summary>
        /// <param name="BillTypeNumber">单据类型编号,连接字符串</param>
        /// <returns>单号</returns>
        public static string GenerateBillNumber(string BillTypeNumber, string connString)
        {
            BonsaiiDbContext   db   = new BonsaiiDbContext(connString);
            BillPropertyModels tmp  = db.BillProperties.Where(p => p.Type == BillTypeNumber).Single();
            string             date = DateTime.Now.ToString("yyyyMMdd");
            //为流水号补充零
            string SerialNumber = AddZero(tmp.Count, tmp.SerialNumber);

            //更新单号的计数值
            tmp.Count++;
            db.Entry(tmp).State = EntityState.Modified;
            db.SaveChanges();

            switch (tmp.CodeMethod)
            {
            case CodeMethod.One:
                return(DateTime.Now.ToString("yyyyMMdd").ToString() + SerialNumber);

            case CodeMethod.Two:
                return(DateTime.Now.ToString("yyyyMM").ToString() + SerialNumber);

            case CodeMethod.Three:
                return(tmp.Code.Substring(0, 10 - tmp.SerialNumber) + SerialNumber);

            default:
                return("");
            }
        }
示例#2
0
        public static string GenerateContractNumber(string abbr, string connString)
        {
            BonsaiiDbContext db           = new BonsaiiDbContext(connString);
            ParamCodes       tmp          = db.ParamCodes.Where(p => p.ParamName == "合同编号").Single();
            string           date         = DateTime.Now.ToString("yyyyMMdd");
            string           SerialNumber = null;

            //为流水号补充零
            if (tmp.SerialNumber != 0)
            {
                SerialNumber = AddZero(tmp.Count, tmp.SerialNumber);
                //更员工号计数值
                tmp.Count++;
                db.Entry(tmp).State = EntityState.Modified;
                db.SaveChanges();
            }

            switch (tmp.CodeMethod)
            {
            case CodeMethod.Day:
                return(DateTime.Now.ToString("yyMMdd").ToString() + SerialNumber);

            case CodeMethod.Month:
                return(DateTime.Now.ToString("yyMM").ToString() + SerialNumber);

            case CodeMethod.Serial:
                return(tmp.Code.Substring(0, 10 - tmp.SerialNumber) + SerialNumber);

            case CodeMethod.Five:
                return(abbr + SerialNumber);

            default:
                return("");
            }
        }
示例#3
0
 /// <summary>
 /// 负责单据生成时的Counter的清零,月清零
 /// </summary>
 public void SetZeroEachMonth()
 {
     //便利每一个公司
     foreach (string tmpConn in ConnStrings)
     {
         //对于不同的企业,分别初始化不同的DbContext,来操作不同的企业数据库
         using (db = new BonsaiiDbContext(tmpConn))
         {
             List <BillPropertyModels> list = db.BillProperties.Where(p => p.CodeMethod.Equals(CodeMethod.Month)).ToList();
             foreach (BillPropertyModels tmp in list)
             {
                 tmp.Count           = 1;
                 db.Entry(tmp).State = EntityState.Modified;
             }
         }
     }
 }
示例#4
0
        /// <summary>
        /// 处理员工请假情况
        /// </summary>
        /// <param name="CurrentDate">当前时间</param>
        public void VacateDell(DateTime CurrentDate)
        {
            BonsaiiDbContext db    = new BonsaiiDbContext("Data Source = 211.149.199.42,1433;Initial Catalog = Bonsaii0000000008;User ID = sa;Password = admin123@;");
            SystemDbContext  sysDb = new SystemDbContext("Data Source = 211.149.199.42,1433;Initial Catalog = BonsaiiSystem;User ID = sa;Password = admin123@;");
            //获取请假表中未读的请假申请,条件为IsRead,当前员工号和,,以列表形式输出;
            List <VacateApplies> VacateApplies = db.VacateApplies.Where(p => p.IsRead == false && DbFunctions.TruncateTime(p.StartDateTime) <= CurrentDate && DbFunctions.TruncateTime(p.EndDateTime) >= CurrentDate && p.AuditStatus == 3).ToList();

            List <EveryDaySignInDate> tmpEveryDay = db.EveryDaySignInDates.Where(p => p.Date == CurrentDate).ToList();

            // 遍历请假申请表,从未读的请假申请中获取员工号,请假开始时间,请假结束时间,请假日期;
            foreach (VacateApplies va in VacateApplies)
            {
                //获取请假表中StartDateTime ,EndDateTime ,和CurrentDate做比较
                //获取日考勤报表中的当前时间;
                EveryDaySignInDate everydaysignindate = null;
                try
                {
                    everydaysignindate = tmpEveryDay.Where(p => p.Date == CurrentDate && p.StaffNumber == va.StaffNumber).Single();
                }
                catch (Exception e)
                {
                    Tools.WriteErrorLog(e);
                    return;
                }
                List <SignInCardStatus> signincardstatus = db.SignInCardStatus.Where(p1 => p1.StaffNumber == va.StaffNumber && p1.WorkDate == CurrentDate).ToList();
                foreach (SignInCardStatus sica in signincardstatus)
                {
                    //遍历打卡表,获得NeedWorksTime,如果NeedWorksTime在请假表之间,便直接在打卡表中删除此点。
                    if (sica.NeedWorkTime >= va.StartDateTime.TimeOfDay && sica.NeedWorkTime <= va.EndDateTime.TimeOfDay)
                    {
                        db.SignInCardStatus.Remove(sica);
                        db.SaveChanges();
                    }
                    //向日考勤表报中写入数据,具体属性是添加请假类型和请假时数。
                    string BillType     = va.BillType;
                    string BillTypeName = null;
                    try
                    {
                        BillTypeName = db.BillProperties.Where(p => p.Type == BillType).Single().TypeName;
                    }
                    catch (Exception e)
                    {
                        Tools.WriteErrorLog(e);
                        return;
                    }
                    // 向日考勤报表中添加请假类型
                    everydaysignindate.VacateType = BillTypeName;
                    //向日考勤报表中添加请假时数
                    //根据排班表和请假表中一样员工号获得员工的排班ID。根据排班ID获得Works中的TotalWorkHours
                    //          获取请假表中请假时数 ,与Works表中规定的工作时数做判断,判断是否大于规定工作时间,如果大于则表示请假一整天,将请假时间赋值为规定工作时间
                    float Hours = CalcuteVacateHours(va.StaffNumber, va.StartDateTime, va.EndDateTime, CurrentDate);
                    everydaysignindate.VacateHours = Hours;
                }
                //      保存所做编辑
                db.Entry(everydaysignindate).State = EntityState.Modified;
                db.SaveChanges();
                //设置请假表中的IsRead属性。如果请假结束时间  < CurrentDate,那么将IsRead属性设为ture
                if (va.EndDateTime <= CurrentDate)
                {
                    va.IsRead = true;
                }
                db.Entry(va).State = EntityState.Modified;
                db.SaveChanges();
            }
        }