예제 #1
0
        public MySearchUtil ToSearchUtil()
        {
            var util = MySearchUtil.New().AndEqual("IsDel", false).OrderByDesc("Id");

            if (!string.IsNullOrWhiteSpace(Key))
            {
                util.AndContains(new[] { "Name", "Mobile", "Phone", "Email" }, Key.Trim());
            }

            if (Dept <= 0)
            {
                return(util);
            }

            if (!IsStrict)
            {
                var deptIds = DeptUtil.GetSelfAndChildrenIds(Dept);
                util.AndIn("DeptId", deptIds);
            }
            else
            {
                util.AndEqual("DeptId", Dept);
            }

            return(util);
        }
예제 #2
0
        public Result <int> Update(Dept dept, IAppUser user)
        {
            try
            {
                var error = Validate(dept);
                if (!string.IsNullOrWhiteSpace(error))
                {
                    return(ResultUtil.Do(ResultCodes.验证失败, 0, error));
                }

                if (dept.ParentId == dept.Id)
                {
                    return(ResultUtil.Do(ResultCodes.验证失败, 0, "不能将自身设置为上级"));
                }

                dept.BeforeUpdate(user);
                var row = _db.Update(dept);
                if (row <= 0)
                {
                    return(ResultUtil.Do(ResultCodes.数据库操作失败, 0, "数据写入失败"));
                }

                DeptUtil.Clear();
                return(ResultUtil.Success(dept.Id));
            }
            catch (Exception ex)
            {
                return(ResultUtil.Exception(ex, 0));
            }
        }
예제 #3
0
        public Result <int> Create(Dept dept, IAppUser user)
        {
            try
            {
                var error = Validate(dept);
                if (!string.IsNullOrWhiteSpace(error))
                {
                    return(ResultUtil.Do(ResultCodes.验证失败, 0, error));
                }

                dept.BeforeCreate(user);
                var id = _db.Create(dept);
                if (id <= 0)
                {
                    return(ResultUtil.Do(ResultCodes.数据库操作失败, 0, "数据写入失败"));
                }

                DeptUtil.Clear();
                return(ResultUtil.Success(id));
            }
            catch (Exception ex)
            {
                return(ResultUtil.Exception(ex, 0));
            }
        }
예제 #4
0
        public Result Delete(int id, IAppUser user)
        {
            try
            {
                var entity = _db.Load <Dept>(id);
                if (entity == null)
                {
                    return(ResultUtil.Do(ResultCodes.数据不存在, "请求的数据不存在"));
                }

                var childrenCount = _db.GetCount <Dept>(MySearchUtil.New()
                                                        .AndEqual("ParentId", id)
                                                        .AndEqual("IsDel", false));
                if (childrenCount > 0)
                {
                    return(ResultUtil.Do(ResultCodes.验证失败, "下属部门不为空,禁止删除"));
                }

                var accountCount = _db.GetCount <Account>(MySearchUtil.New()
                                                          .AndEqual("DeptId", id)
                                                          .AndEqual("IsDel", false));
                if (accountCount > 0)
                {
                    return(ResultUtil.Do(ResultCodes.验证失败, "部门内员工不为空,禁止删除"));
                }

                var row = _db.Remove <Dept>(id);
                if (row > 0)
                {
                    DeptUtil.Clear();
                    return(ResultUtil.Success());
                }
                else
                {
                    return(ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
                }
            }
            catch (Exception ex)
            {
                return(ResultUtil.Exception(ex));
            }
        }
예제 #5
0
        public Result Loan(int assetId, int targetDeptId, int targetAccountId, DateTime loanAt, DateTime expectedReturnAt, string pics, string newPositon, string remark, IAppUser user)
        {
            // 验证参数
            if (assetId <= 0)
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "指定了无效的资产id"));
            }
            if (targetDeptId <= 0)
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "指定了无效的部门id"));
            }
            if (loanAt < DateTime.Parse("1900-1-1") || expectedReturnAt < DateTime.Parse("1900-1-1"))
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "借出和预计归还日期必须大于1900-1-1"));
            }
            if (loanAt > expectedReturnAt)
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "预计归还日期必须大于等于借出日期"));
            }

            var loan  = new Loan();
            var asset = LoadDto(assetId);

            if (asset == null)
            {
                return(ResultUtil.Do(ResultCodes.数据不存在, "资产不存在或已删除"));
            }
            if (asset.State == "借出" || asset.State == "报废")
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "该资产已借出或已报废,禁止借出操作"));
            }

            if (targetAccountId > 0)
            {
                var accountService = new AccountService();
                var account        = accountService.Load(targetAccountId);

                if (account == null)
                {
                    return(ResultUtil.Do(ResultCodes.数据不存在, "目标使用人不存在或已删除"));
                }

                var dept = DeptUtil.Get(account.DeptId);
                if (dept == null)
                {
                    throw new Exception("无法找到员工所属部门。员工ID:" + account.Id.ToString() + ";部门ID:" + account.DeptId.ToString());
                }

                loan.TargetAccountId   = targetAccountId;
                loan.TargetAccountName = account.Name;
                loan.TargetDeptId      = targetDeptId;
                loan.TargetDeptName    = dept.Name;
            }
            else
            {
                var dept = DeptUtil.Get(targetDeptId);
                if (dept == null)
                {
                    return(ResultUtil.Do(ResultCodes.数据不存在, "目标部门不存在或已删除"));
                }
                loan.TargetAccountId   = 0;
                loan.TargetAccountName = "";
                loan.TargetDeptId      = dept.Id;
                loan.TargetDeptName    = dept.Name;
            }

            loan.AssetId          = asset.Id;
            loan.AssetCode        = asset.Code;
            loan.AssetName        = asset.Name;
            loan.FromAccountId    = asset.AccountId;
            loan.FromAccountName  = asset.AccountName;
            loan.FromDeptId       = asset.DeptId;
            loan.FromDeptName     = asset.DeptName;
            loan.LoanAt           = loanAt;
            loan.ExpectedReturnAt = expectedReturnAt;
            loan.IsReturn         = false;
            loan.ReturnAt         = null;
            loan.Pics             = pics;

            var log = new AssetLog
            {
                AssetId           = loan.AssetId,
                AssetCode         = loan.AssetCode,
                AssetName         = loan.AssetName,
                FromAccountId     = loan.FromAccountId,
                FromAccountName   = loan.FromAccountName,
                FromDeptId        = loan.FromDeptId,
                FromDeptName      = loan.FromDeptName,
                TargetAccountId   = loan.TargetAccountId,
                TargetAccountName = loan.TargetAccountName,
                TargetDeptId      = loan.TargetDeptId,
                TargetDeptName    = loan.TargetDeptName,
                Type      = "借出",
                OperateAt = loan.LoanAt,
                Pics      = loan.Pics
            };

            loan.BeforeCreate(user);
            log.BeforeCreate(user);

            var sqls = new KeyValuePairList
            {
                {
                    "UPDATE Asset_Asset SET [State]='借出',Position=@Position,DeptId=@DeptId,AccountId=@AccountId,UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new
                    {
                        Id        = log.AssetId,
                        Position  = newPositon,
                        UserId    = user.Id,
                        UserName  = user.Name,
                        AccountId = log.TargetAccountId,
                        DeptId    = log.TargetDeptId
                    }
                },
                { db.GetCommonInsertSql <Loan>(), loan },
                { db.GetCommonInsertSql <AssetLog>(), log }
            };

            var row = db.ExecuteTran(sqls);

            return(row ? ResultUtil.Success() : ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
        }
예제 #6
0
        /// <summary>
        /// 转移资产
        /// </summary>
        public Result Move(AssetLog log, string newPosition, IAppUser user)
        {
            var asset = LoadDto(log.AssetId);

            if (asset == null)
            {
                return(ResultUtil.Do(ResultCodes.数据不存在, "指定的资产不存在或已删除"));
            }
            switch (asset.State)
            {
            case "报废":
                return(ResultUtil.Do(ResultCodes.数据不存在, "指定的资产已报废,禁止操作"));

            case "借出":
                return(ResultUtil.Do(ResultCodes.数据不存在, "指定的资产已借出,禁止操作"));
            }

            log.AssetCode = asset.Code;
            log.AssetName = asset.Name;

            if (log.OperateAt < DateTime.Parse("1900-1-1"))
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "调配日期无效"));
            }

            DeptDto targetDept;

            if (log.TargetAccountId > 0)
            {
                var accountService = new AccountService();
                var targetAccount  = accountService.Load(log.TargetAccountId);

                if (targetAccount == null)
                {
                    return(ResultUtil.Do(ResultCodes.数据不存在, "目标用户不存在"));
                }

                targetDept = DeptUtil.Get(targetAccount.DeptId);
                if (targetDept == null)
                {
                    throw new Exception("用户所在的部门信息不存在,请联系管理员");
                }

                log.TargetAccountId   = targetAccount.Id;
                log.TargetAccountName = targetAccount.Name;
                log.TargetDeptId      = targetDept.Id;
                log.TargetDeptName    = targetDept.Name;
            }
            else
            {
                targetDept = DeptUtil.Get(log.TargetDeptId);
                if (targetDept == null)
                {
                    return(ResultUtil.Do(ResultCodes.数据不存在, "目标部门不存在"));
                }
                else
                {
                    log.TargetDeptId      = targetDept.Id;
                    log.TargetDeptName    = targetDept.Name;
                    log.TargetAccountId   = 0;
                    log.TargetAccountName = "";
                }
            }

            log.Type = "调配";

            var sql = new KeyValuePairList
            {
                {
                    "UPDATE Asset_Asset SET DeptId=@DeptId,@Position=@Position,AccountId=@AccountId,UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new { Id = log.AssetId, Position = newPosition, DeptId = log.TargetDeptId, AccountId = log.TargetAccountId, UserId = user.Id, UserName = user.Name }
                }
            };

            log.BeforeCreate(user);
            sql.Add(db.GetCommonInsertSql <AssetLog>(), log);

            var row = db.ExecuteTran(sql);

            return(row ? ResultUtil.Success() : ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
        }
예제 #7
0
        public MySearchUtil ToSearchUtil()
        {
            var util = MySearchUtil.New().AndEqual("IsDel", false);

            if (!string.IsNullOrWhiteSpace(Key))
            {
                util.AndContains(new[] { "Name", "Code", "FinancialCode", "Band", "Imei", "Model", "Source", "Remark", "Position", "DeptName", "AccountName" }, Key.Trim());
            }

            if (!string.IsNullOrWhiteSpace(Position))
            {
                util.AndContains("Position", Position.Trim());
            }

            if (!string.IsNullOrWhiteSpace(State))
            {
                util.AndEqual("State", State.Trim());
            }

            if (DeptId.HasValue)
            {
                if (!IsContainSubDept)
                {
                    util.AndEqual("DeptId", (int)DeptId);
                }
                else
                {
                    var depts = DeptUtil.GetSelfAndChildrenIds((int)DeptId);
                    util.AndIn("DeptId", depts);
                }
            }

            if (CateId.HasValue && CateId > 0)
            {
                var cate = AssetCateUtil.Get((int)CateId);
                if (cate == null)
                {
                    util.And("1=2");
                }
                else
                {
                    var ids = AssetCateUtil.GetSelfAndChildrenIds(cate.Id);
                    util.AndIn("AssetCateId", ids);
                }
            }

            if (AccountId.HasValue && AccountId > 0)
            {
                util.AndEqual("AccountId", (int)AccountId);
            }

            if (!IncludeScrap)
            {
                util.AndNotEqual("State", "报废");
            }

            if (!string.IsNullOrWhiteSpace(Healthy))
            {
                util.AndEqual("Healthy", Healthy);
            }

            if (Sort.HasValue)
            {
                switch (Sort)
                {
                case 1:
                    util.OrderBy("Code");
                    break;

                case 2:
                    util.OrderBy("Name");
                    break;

                case 3:
                    util.OrderBy("DeptName");
                    break;

                case 4:
                    util.OrderBy("AccountName");
                    break;

                default:
                    util.OrderByDesc("UpdateAt");
                    break;
                }
            }
            else
            {
                util.OrderByDesc("UpdateAt");
            }

            return(util);
        }