public void EmpSync()
        {
            var         ulist = GetDdUserList();
            AttUserOper auo   = new AttUserOper();

            ulist.ForEach(p =>
            {
                var kqu = Dkc.KqUsers.FirstOrDefault(ku => ku.DdId == p.DdId);
                if (kqu == null)
                {
                    KqUser ku = p.ToSon <DdApi.Model.User, KqUser>();
                    var u     = auo.GetUserinfo(ku.UserName);
                    if (u != null)
                    {
                        ku.AttDeptId = (int)u.DEFAULTDEPTID;
                        ku.AttUserId = u.USERID;
                    }
                    Dkc.KqUsers.Add(ku);
                }
                else if (kqu != null && kqu.AttUserId == 0)
                {
                    var u = auo.GetUserinfo(kqu.UserName);
                    if (u != null)
                    {
                        kqu.AttDeptId = (int)u.DEFAULTDEPTID;
                        kqu.AttUserId = u.USERID;
                    }
                }
            });
            Dkc.SaveChanges();
        }
Beispiel #2
0
        public void SyncByFailRecord(List <FailRecord> failRecords)
        {
            var kuList = Dkc.KqUsers.ToList();

            failRecords.ForEach(p =>
            {
                if (!p.IsSucess)
                {
                    var u = kuList.FirstOrDefault(k => k.DdId == p.DDid);
                    if (u == null)
                    {
                        p.Note += "|" + DateTime.Now + "_未同步到考勤系统";
                    }
                    else if (u.AttUserId == 0)
                    {
                        p.Note += "|" + DateTime.Now + "_考勤系统中未找到该员工";
                    }
                    else
                    {
                        var ar = GetCheckInOutRecord(new List <string>()
                        {
                            p.DDid
                        }, p.BegingDate, p.EndDate);
                        List <CHECKINOUT> cios = new List <CHECKINOUT>();
                        ar.ForEach(aritem =>
                        {
                            if (aritem.TimeResult != "NotSigned")
                            {
                                int c = Ac.CHECKINOUT.Count(ci => ci.USERID == u.AttUserId && ci.CHECKTIME == aritem.CheckTime);
                                if (c == 0)
                                {
                                    cios.Add(new CHECKINOUT
                                    {
                                        USERID     = u.AttUserId,
                                        CHECKTYPE  = "I",
                                        CHECKTIME  = aritem.CheckTime,
                                        VERIFYCODE = 1,
                                        SENSORID   = "3",
                                        sn         = "0246361160468",
                                    });
                                }
                            }
                        });
                        var list = cios.Distinct(new CheckInoutComparer()).ToList();
                        Ac.CHECKINOUT.AddRange(list);
                        p.IsSucess = true;
                        p.Note    += "|" + DateTime.Now + "_同步成功";
                    }

                    Dkc.SaveChanges();
                    Ac.SaveChanges();
                }
            });
        }
Beispiel #3
0
        private int WriteSyncRecord(DateTime datetimeBegin, DateTime datetimeEnd)
        {
            AttSyncRecord asr = new AttSyncRecord
            {
                SyncTime  = DateTime.Now,
                BeginTime = datetimeBegin,
                EndTime   = datetimeEnd,
                Note      = "手动操作同步"
            };

            Dkc.AttSyncRecords.Add(asr);
            Dkc.SaveChanges();
            return(asr.Id);
        }
Beispiel #4
0
        public void WriteToAttSystem(List <AttRecord> attRecords, DateTime datetimeBegin, DateTime datetimeEnd)
        {
            List <CHECKINOUT> cios;
            var           kuList   = Dkc.KqUsers.ToList();
            int           recordId = WriteSyncRecord(datetimeBegin, datetimeEnd);
            List <string> ddlist   = attRecords.Select(p => p.DdId).Distinct().ToList();

            ddlist.ForEach(ddid =>
            {
                var u = kuList.FirstOrDefault(p => p.DdId == ddid);
                if (u == null)
                {
                    //人员未同步
                    Dkc.FailRecords.Add(new FailRecord
                    {
                        DDid       = ddid,
                        BegingDate = datetimeBegin,
                        EndDate    = datetimeEnd,
                        SyncId     = recordId,
                        IsSucess   = false,
                        Note       = DateTime.Now + "_未同步到考勤系统"
                    });
                }
                else if (u.AttUserId == 0)
                {
                    //考勤系统未添加
                    Dkc.FailRecords.Add(new FailRecord
                    {
                        DDid       = ddid,
                        BegingDate = datetimeBegin,
                        EndDate    = datetimeEnd,
                        SyncId     = recordId,
                        IsSucess   = false,
                        UserName   = u.UserName,
                        DeptName   = u.DepartName,
                        Note       = "考勤系统中未找到该员工"
                    });
                }
                else
                {
                    cios = new List <CHECKINOUT>();
                    attRecords.Where(a => a.DdId == ddid).ToList().ForEach(p =>
                    {
                        if (p.TimeResult != "NotSigned")
                        {
                            int c = Ac.CHECKINOUT.Count(ci => ci.USERID == u.AttUserId && ci.CHECKTIME == p.CheckTime);
                            if (c == 0)
                            {
                                cios.Add(new CHECKINOUT
                                {
                                    USERID     = u.AttUserId,
                                    CHECKTYPE  = "I",
                                    CHECKTIME  = p.CheckTime,
                                    VERIFYCODE = 1,
                                    SENSORID   = "3",
                                    sn         = "0246361160468",
                                });
                            }
                        }
                    });
                    var list = cios.Distinct(new CheckInoutComparer()).ToList();
                    Ac.CHECKINOUT.AddRange(list);
                }
                Dkc.SaveChanges();
                Ac.SaveChanges();
            });
        }