Пример #1
0
        public Result Scrap(int assetId, DateTime operateAt, string pics, string remark, IAppUser user)
        {
            var asset = LoadDto(assetId);

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

            var log = new AssetLog
            {
                AssetId           = asset.Id,
                AssetName         = asset.Name,
                AssetCode         = asset.Code,
                FromAccountId     = asset.AccountId,
                FromAccountName   = asset.AccountName,
                FromDeptId        = asset.DeptId,
                FromDeptName      = asset.DeptName,
                TargetAccountId   = 0,
                TargetAccountName = "",
                TargetDeptId      = 0,
                TargetDeptName    = "",
                Type      = "报废",
                OperateAt = operateAt,
                Remark    = remark,
                Pics      = pics
            };

            log.BeforeCreate(user);

            var sqls = new KeyValuePairList
            {
                {
                    "UPDATE Asset_Asset SET [State]='报废',UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new { Id = log.AssetId, UserId = user.Id, UserName = user.Name }
                }
            };

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

            var row = db.ExecuteTran(sqls);

            return(row ? ResultUtil.Success() : ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
        }
Пример #2
0
        public Result Recovery(int assetId, DateTime recoveryAt, string pics, string newPosition, string remark, IAppUser user)
        {
            var asset = LoadDto(assetId);

            if (asset == null)
            {
                return(ResultUtil.Do(ResultCodes.数据不存在, "请求的资产不存在"));
            }

            if (recoveryAt < DateTime.Parse("1900-1-1"))
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "回收日期不得小于1900-1-1"));
            }

            var log = new AssetLog
            {
                AssetId           = asset.Id,
                AssetName         = asset.Name,
                AssetCode         = asset.Code,
                FromAccountId     = asset.AccountId,
                FromAccountName   = asset.AccountName,
                FromDeptId        = asset.DeptId,
                FromDeptName      = asset.DeptName,
                TargetAccountId   = 0,
                TargetAccountName = "",
                TargetDeptId      = 0,
                TargetDeptName    = "",
                Type      = "回收",
                OperateAt = recoveryAt,
                Remark    = remark + "\n回收后位置:" + newPosition,
                Pics      = pics
            };

            log.BeforeCreate(user);

            var sqls = new KeyValuePairList
            {
                {
                    "UPDATE Asset_Asset SET [State]='闲置',Position=@Position,DeptId=0,AccountId=0,UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new { Id = log.AssetId, UserID = user.Id, UserName = user.Name, Position = newPosition }
                },
                { db.GetCommonInsertSql <AssetLog>(), log }
            };

            var row = db.ExecuteTran(sqls);

            return(row ? ResultUtil.Success() : ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
        }
        public int SaveAssetLog(AssetLogViewModel assetLog, int terminalId, int tenantId)
        {
            var newAssetLog = new AssetLog();

            Mapper.Map(assetLog, newAssetLog);

            newAssetLog.AssetLogId  = Guid.NewGuid();
            newAssetLog.DateCreated = DateTime.UtcNow;
            newAssetLog.TerminalId  = terminalId;
            newAssetLog.TenantId    = tenantId;

            _currentDbContext.AssetLog.Add(newAssetLog);
            int res = _currentDbContext.SaveChanges();

            return(res);
        }
Пример #4
0
        public JsonResult Edit(string jsonAssetAttribute, string asset)
        {
            string error         = "false";
            string errorQuantity = "false";

            try
            {
                TempData.Remove("checkScreenArea");
                String assetString = HttpUtility.HtmlDecode(asset);
                List <AssetAttributeValue> assetAttributeValue = JsonConvert.DeserializeObject <List <AssetAttributeValue> >(jsonAssetAttribute);
                Asset assetViewModel = JsonConvert.DeserializeObject <Asset>(assetString);
                //assetViewModel.ApplicationUserID = Convert.ToInt32(User.Identity.GetUserId());

                var validateName = _assetService.GetAll(new string[] { "Area", "Area.Location" }).FirstOrDefault
                                       (x => x.Name == assetViewModel.Name && x.Area.ID == assetViewModel.AreaID && x.ID != assetViewModel.ID);
                if (validateName != null)
                {
                    error = "Name Asset already exists in Area";
                }
                else
                {
                    _assetService.Update(assetViewModel, assetAttributeValue);
                    SetAlert("Update Asset success", "success");
                    AssetLog assetLog = new AssetLog
                    {
                        AssetID           = assetViewModel.ID,
                        Active            = true,
                        CreatedAt         = DateTime.Now,
                        Message           = "Asset Updated",
                        ApplicationUserID = applicationUserManager.FindByName(User.Identity.GetUserName()).Id
                    };

                    _assetLogService.Add(assetLog);
                    _assetLogService.SaveChanges();
                }
                // update asset log
            }
            catch (Exception e)
            {
                SetAlert("Update Asset error", "error");
            }
            return(Json(error));
        }
Пример #5
0
        public IActionResult Recovery(int id)
        {
            var entity = _service.LoadDto(id);

            if (entity == null)
            {
                return(new EmptyResult());
            }
            var logDto = new AssetLog();

            logDto.AssetId         = entity.Id;
            logDto.AssetName       = entity.Name;
            logDto.AssetCode       = entity.Code;
            logDto.FromAccountId   = entity.AccountId;
            logDto.FromAccountName = entity.AccountName;
            logDto.FromDeptId      = entity.DeptId;
            logDto.FromDeptName    = entity.DeptName;
            logDto.Type            = "调配";
            logDto.TargetDeptId    = 0;
            logDto.TargetAccountId = 0;
            logDto.OperateAt       = DateTime.Today;
            logDto.Remark          = "";
            logDto.Pics            = "";

            ViewBag.State    = entity.State;
            ViewBag.Healthy  = entity.Healthy;
            ViewBag.Position = entity.Position;

            if (entity.State == "作废" || entity.State == "借出")
            {
            }
            else
            {
                InitDeptAndAccount();
            }
            return(View(logDto));
        }
Пример #6
0
        public Result Return(int loanId, DateTime returnAt, IAppUser user)
        {
            var loan = db.Load <Loan>(loanId);

            if (loan == null)
            {
                return(ResultUtil.Do(ResultCodes.数据不存在, "借出记录不存在"));
            }
            if (loan.IsReturn)
            {
                return(ResultUtil.Do(ResultCodes.验证失败, "此借出记录已归还,请勿重复操作"));
            }

            var state = loan.FromDeptId == 0 ? "闲置" : "使用中";

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

            log.BeforeCreate(user);

            var sqls = new KeyValuePairList
            {
                {
                    "UPDATE Asset_Asset SET [State]=@State,DeptId=@DeptId,Position=@Position,AccountId=@AccountId,UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new
                    {
                        Id        = loan.AssetId,
                        State     = state,
                        DeptId    = loan.FromDeptId,
                        AccountId = loan.FromAccountId,
                        UserID    = user.Id,
                        UserName  = user.Name,
                        Position  = loan.FromPosition
                    }
                },
                {
                    "UPDATE Asset_Loan SET IsReturn=1,ReturnAt=@ReturnAt,UpdateAt=GETDATE(),UpdateBy=@UserId,Updator=@UserName WHERE Id=@Id",
                    new { Id = loanId, UserId = user.Id, UserName = user.Name, ReturnAt = returnAt }
                },
                { db.GetCommonInsertSql <AssetLog>(), log }
            };

            var row = db.ExecuteTran(sqls);

            return(row ? ResultUtil.Success() : ResultUtil.Do(ResultCodes.数据库操作失败, "数据库写入失败"));
        }
Пример #7
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.数据库操作失败, "数据库写入失败"));
        }
Пример #8
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.数据库操作失败, "数据库写入失败"));
        }
Пример #9
0
        internal override async Task <EntityResult> AfterCreateAsync(AssetLog entity, bool notifyAll = false)
        {
            var assetAlerts = await Context.AssetAlerts.Where(aa => aa.AssetId == entity.AssetId && aa.AssetLogTypeId == entity.AssetLogTypeId).ToListAsync();

            var userEntity = await Context.Users.FirstOrDefaultAsync(u => u.UserName == entity.CreatedBy);

            var assetEntity = await Context.Assets.FirstOrDefaultAsync(a => a.Id == entity.AssetId);

            var assetLogTypeEntity = await Context.AssetLogTypes.FirstOrDefaultAsync(alt => alt.Id == entity.AssetLogTypeId);

            var userName  = userEntity.FullName ?? userEntity.UserName;
            var assetName = assetEntity.Name + (assetEntity.CustomId != null ? string.Format(" - {0}", assetEntity.CustomId) : "");

            foreach (var assetAlert in assetAlerts)
            {
                var message = string.Format("{0} reported {1} for asset {2} on {3}.", userName, assetLogTypeEntity.Name, assetName, entity.CreatedOn.ToLocalTime().ToString("MM/dd/yyyy hh:mm tt"));

                if (!string.IsNullOrEmpty(entity.Comment))
                {
                    message += string.Format(" Comment(s): {0}", entity.Comment);
                }

                foreach (var user in assetAlert.Users)
                {
                    var date = DateTime.Now;
                    var log  = new AssetAlertLog()
                    {
                        AlertDate    = date,
                        AssetLogId   = entity.Id,
                        AssetAlertId = assetAlert.Id,
                        Description  = message,
                        Type         = AssetAlertLogType.System.ToString(),
                        UserId       = user.UserId
                    };

                    Context.AssetAlertLogs.Add(log);

                    if (Context.SaveChanges().Succeeded)
                    {
                        if (!string.IsNullOrEmpty(HttpContext.Request.Headers["X-Altask-Client-Id"]))
                        {
                            SignalRHub.NotifyAssetAlertLogCreate(Guid.Parse(HttpContext.Request.Headers["X-Altask-Client-Id"]), log.ToDto());
                        }
                    }

                    if (user.User.ReceiveEmail)
                    {
                        var result = await UserManager.EmailService.SendAsync(Settings.AlertEmailFrom, user.User.EmailAddress, Settings.AlertEmailSubject, message.ToString());

                        Context.AssetAlertLogs.Add(new AssetAlertLog()
                        {
                            AlertDate    = date,
                            AssetLogId   = entity.Id,
                            AssetAlertId = assetAlert.Id,
                            Description  = message,
                            Type         = (result.Succeeded ? AssetAlertLogType.SendEmailSuccess : AssetAlertLogType.SendEmailFailure).ToString(),
                            UserId       = user.UserId
                        });

                        Context.SaveChanges();
                    }

                    if (user.User.ReceiveText)
                    {
                        var result = await UserManager.EmailService.SendAsync(Settings.AlertEmailFrom, user.User.SmsAddress, Settings.AlertEmailSubject, message.ToString());

                        Context.AssetAlertLogs.Add(new AssetAlertLog()
                        {
                            AlertDate    = date,
                            AssetLogId   = entity.Id,
                            AssetAlertId = assetAlert.Id,
                            Description  = message,
                            Type         = (result.Succeeded ? AssetAlertLogType.SendSmsSuccess : AssetAlertLogType.SendSmsFailure).ToString(),
                            UserId       = user.UserId
                        });

                        Context.SaveChanges();
                    }
                }
            }

            return(EntityResult.Succeded(1));
        }
Пример #10
0
        public JsonResult Move(AssetLog log, string position)
        {
            var result = _service.Move(log, position, AppUser);

            return(Json(result));
        }
Пример #11
0
 public void Update(AssetLog assetLog)
 {
     _assetLogRepository.Update(assetLog);
 }
Пример #12
0
 public void Add(AssetLog assetLog)
 {
     _assetLogRepository.Add(assetLog);
 }