/// <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(""); } }
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(""); } }
/// <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; } } } }
/// <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(); } }