Пример #1
0
        public JsonResult DeleteDepart(int id)
        {
            var personBll   = new PersonInfoBll();
            var personCount = personBll.CountDepartPerson(id);

            if (personCount > 0)
            {
                return(Json(ErrorModel.DeleteForbidden));
            }

            var departBll  = new DepartInfoBll();
            var subDeparts = departBll.QueryList("IsDelete=0 AND ParentId=" + id);

            if (subDeparts.Any())
            {
                return(Json(ErrorModel.DeleteForbidden));
            }

            var success = departBll.DeleteSoftly(id);

            if (success)
            {
                DataUpdateLog.SingleUpdate(typeof(DepartInfo).Name, id, DataUpdateType.Delete);

                return(Json(ErrorModel.OperateSuccess));
            }

            return(Json(ErrorModel.OperateFailed));
        }
Пример #2
0
        public JsonResult GetPersonInfo(int id)
        {
            var personInfoBll = new PersonInfoBll();
            var person        = personInfoBll.QuerySingle("IsDelete=0 AND Id=" + id);

            if (person == null)
            {
                return(Json(ErrorModel.GetDataFailed));
            }

            return(Json(ErrorModel.GetDataSuccess(person)));
        }
Пример #3
0
        /// <summary>
        /// 手动执行同步运安数据库数据的操作
        /// </summary>
        private void btnMigration_Click(object sender, EventArgs e)
        {
            var bll = new PersonInfoBll();

            if (bll.Exists())
            {
                MessageBox.Show(@"人员信息已存在(:=");
            }
            else
            {
                OracleMigrationTask.ExecuteDataSynchronization();
            }
        }
Пример #4
0
        public JsonResult PersonEdit(PersonInfo person)
        {
            if (person == null)
            {
                return(Json(ErrorModel.InputError));
            }

            var personBll = new PersonInfoBll();
            // 验证工号重复性
            var condition = person.Id > 0
                ? $"WorkNo='{person.WorkNo}' AND Id<>{person.Id} AND IsDelete=0"
                : $"WorkNo='{person.WorkNo}' AND IsDelete=0";

            if (personBll.Exists(condition))
            {
                return(Json(ErrorModel.ExistSameItem));
            }

            // 获取姓名的简拼
            person.Spell      = PinyinHelper.GetInitials(person.Name).ToLower();
            person.UpdateTime = DateTime.Now;

            var dbUpdateType = person.Id > 0 ? DataUpdateType.Update : DataUpdateType.Insert;

            var success = false;

            if (person.Id > 0)
            {
                success = personBll.Update(person);
            }
            else
            {
                // 第一次录入时将密码设置为工号后四位
                var password = person.WorkNo.Substring(person.WorkNo.Length - 5);
                // person.Password = password.GetMd5();
                // @FrancisTan 修改于 2017-02-17
                // 目的是为了统一密码的生成,保证一致性
                person.Password = EncryptHelper.EncryptPassword(password);

                success = personBll.Insert(person).Id > 0;
            }

            if (success)
            {
                DataUpdateLog.SingleUpdate(typeof(PersonInfo).Name, (int)person.Id, dbUpdateType);

                return(Json(ErrorModel.OperateSuccess));
            }

            return(Json(ErrorModel.OperateFailed));
        }
Пример #5
0
        private void Uniq(ref List <Posts> posts, ref List <DepartInfo> departs, ref List <PersonInfo> staff)
        {
            List <Posts>      _posts   = new PostsBll().QueryAll().ToList();
            List <DepartInfo> _departs = new DepartInfoBll().QueryAll().ToList();
            List <string>     _workNos = new PersonInfoBll()
                                         .QueryList("IsDelete=0", new[] { nameof(PersonInfo.WorkNo) })
                                         .Select(p => p.WorkNo).ToList();

            posts   = Distinct(posts, p => p.PostName).Where(p => p.PostName != string.Empty).ToList();
            departs = Distinct(departs, d => d.DepartmentName).Where(d => d.DepartmentName != string.Empty).ToList();

            posts   = posts.Where(p => !Contains(_posts, item => item.PostName == p.PostName)).ToList();
            departs = departs.Where(d => !Contains(_departs, item => item.DepartmentName == d.DepartmentName)).ToList();
            staff   = staff.Where(s => !_workNos.Contains(s.WorkNo)).ToList();
        }
Пример #6
0
        public void TestImportNewData()
        {
            // 导入员工之前必须先导入部门、岗位
            var departImport = new DepartmentMigration();

            departImport.ImportNewData();

            var postImport = new PostMigragion();

            postImport.ImportNewData();

            var testInstance = new StaffMigration();

            testInstance.ImportNewData();

            var totalCount = 7063;
            var allStaff   = new PersonInfoBll().QueryAll().ToList();

            allStaff.Should().HaveCount(totalCount, $"because the total count of the data source is {totalCount}");

            var single = allStaff.Find(p => p.WorkNo == "2920133");

            single.Should().NotBeNull();
            single.Name.Should().Be("杨凤山");
            single.BirthDate.Should().Be(new DateTime(1960, 12, 1, 12, 0, 0));
            single.Password.Should().Be("0133".GetMd5());

            var dbLogs = new DbUpdateLogBll().QueryList($"TableName='{nameof(PersonInfo)}'");

            dbLogs.Should().HaveCount(totalCount);

            var relations = new PrimaryIdRelationBll().QueryAll();

            relations.Should().HaveCount(totalCount);

            var maxId = new OracleTableMaxIdBll().QuerySingle($"TableName='{nameof(Z_JCYY_BASEPERSONNEL)}'");

            maxId.Should().NotBeNull();
            maxId?.MaxId.Should().NotBeNullOrEmpty()
            .And.Subject.Should().Be("404990019");
        }
Пример #7
0
        private void Persistent(List <Posts> posts, List <DepartInfo> departs, List <PersonInfo> staff)
        {
            var staffBll    = new PersonInfoBll();
            var dbUpdateBll = new DbUpdateLogBll();

            Func <bool>[] delegates = new Func <bool> [3];
            delegates[0] = () =>
            {
                if (posts.Count > 0)
                {
                    var postBll = new PostsBll();
                    var maxId   = postBll.GetMaxId();
                    postBll.BulkInsert(posts);

                    var ids    = postBll.QueryList("Id>" + maxId, new[] { nameof(Posts.Id) }).Select(p => p.Id);
                    var dbLogs = ids.Select(id => new DbUpdateLog {
                        TableName = nameof(Posts), TargetId = id, UpdateType = 1, UpdateTime = DateTime.Now
                    });
                    dbUpdateBll.BulkInsert(dbLogs);
                }
                return(true);
            };
            delegates[1] = () =>
            {
                if (departs.Count > 0)
                {
                    var departBll = new DepartInfoBll();
                    var maxId     = departBll.GetMaxId();
                    departBll.BulkInsert(departs);

                    var ids    = departBll.QueryList("Id>" + maxId, new[] { nameof(DepartInfo.Id) }).Select(p => p.Id);
                    var dbLogs = ids.Select(id => new DbUpdateLog {
                        TableName = nameof(DepartInfo), TargetId = id, UpdateType = 1, UpdateTime = DateTime.Now
                    });
                    dbUpdateBll.BulkInsert(dbLogs);
                }
                return(true);
            };
            delegates[2] = () =>
            {
                List <Posts>      _posts   = new PostsBll().QueryAll().ToList();
                List <DepartInfo> _departs = new DepartInfoBll().QueryAll().ToList();
                staff.ForEach(s =>
                {
                    // 根据前面用 PersonId 存储的部门名称找到此员工对应的部门
                    // 根据前面用 PhotoPath 存储的职务名称找到此员工对应的职务
                    var depart     = _departs.Find(d => d.DepartmentName == s.PersonId);
                    var post       = _posts.Find(p => p.PostName == s.PhotoPath);
                    s.DepartmentId = depart?.Id ?? 0;
                    s.PostId       = post?.Id ?? 0;
                    s.PersonId     = string.Empty;
                    s.PhotoPath    = string.Empty;
                });

                var maxId = staffBll.GetMaxId();
                staffBll.BulkInsert(staff);

                var ids    = staffBll.QueryList("Id>" + maxId, new[] { nameof(PersonInfo.Id) }).Select(p => p.Id);
                var dbLogs = ids.Select(id => new DbUpdateLog {
                    TableName = nameof(PersonInfo), TargetId = (int)id, UpdateType = 1, UpdateTime = DateTime.Now
                });
                dbUpdateBll.BulkInsert(dbLogs);

                return(true);
            };

            // 若插入失败,则尝试五次
            for (var i = 0; i < 5; i++)
            {
                var success = staffBll.ExecuteTransation(delegates);
                if (success)
                {
                    return;
                }
            }
        }