Beispiel #1
0
        /// <summary>
        /// 取消预约
        /// </summary>
        /// <param name="InfoId"></param>
        public void CancelReserve(Guid InfoId)
        {
            Repository <Prc_UpgradeInfo> repository = new Repository <Prc_UpgradeInfo>(DbContext);
            Prc_UpgradeInfo editInfo = repository.Get(a => a.ID == InfoId);

            editInfo.UpgradeStatus = EnumUpgradeStatus.Canceled;
            repository.Update(editInfo);
            OperateLoger.Write(LoginUserInfo.CurrUser.UserName, DateTime.Now, "取消客户【" + editInfo.MallName + "】的升级预约");
            DbContext.SaveChanges();
        }
Beispiel #2
0
        public DTOBackHeartbeat Heartbeat([FromBody] DTOHeartbeat dto)
        {
            DTOBackHeartbeat restul = new DTOBackHeartbeat();

            restul.CancelBusiness = new List <string>();
            Repository <Prc_UpgradeInfo> repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);
            Prc_UpgradeInfo info = repositoryInfo.Get(a => a.ID == dto.InfoID && !a.IsDelete);

            if (info == null)
            {
                throw new Exception("未找到升级信息");
            }
            //写入信息的心跳时间
            info.HeartbeatTime   = DateTime.Now;
            info.LastOperateUser = BLLUpgrade.SystemUser;
            repositoryInfo.Update(info);


            Repository <Prc_UpgradeInfoItem> repositoryItem = new Repository <Prc_UpgradeInfoItem>(DbContext);
            List <Prc_UpgradeInfoItem>       items          = repositoryItem.Search(a => a.UpgradeInfo.ID == info.ID && !a.IsDelete);

            items.ForEach(a =>
            {
                //写入子项的心跳状态
                if (dto.LostNetworkBusNum != null && dto.LostNetworkBusNum.Contains(a.BusinessNum))
                {
                    a.HeartbeatStatus = 1;
                }
                else
                {
                    a.HeartbeatStatus = 0;
                }

                a.LastOperateUser = BLLUpgrade.SystemUser;
                repositoryItem.Update(a);

                if (a.UpgradeStatus == EnumUpgradeStatus.Canceled)
                {
                    //被忽略/取消的门店
                    restul.CancelBusiness.Add(a.BusinessNum);
                }
            });

            DbContext.SaveChanges();

            //赋返回信息
            restul.ConfirmUpgradeTime = info.ConfirmUpgradeTime;
            restul.IsCancel           = info.UpgradeStatus == EnumUpgradeStatus.Canceled;
            restul.IsStartUpgrade     = info.UpgradeStatus == EnumUpgradeStatus.Upgrading;


            return(restul);
        }
Beispiel #3
0
        /// <summary>
        /// 修改确认升级时间
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public ReturnResponse EditConfirmUpgradeTime(DTOEditUpgradeInfo dto)
        {
            Repository <Prc_UpgradeInfo> repository = new Repository <Prc_UpgradeInfo>(DbContext);
            Prc_UpgradeInfo editInfo = repository.Get(a => a.ID == dto.ID);

            editInfo.ConfirmUpgradeTime = dto.ConfirmUpgradeTime;
            editInfo.Summary            = dto.Summary;
            repository.Update(editInfo);
            OperateLoger.Write(LoginUserInfo.CurrUser.UserName, DateTime.Now, "确认客户【" + editInfo.MallName + "】的升级时间为【" + dto.ConfirmUpgradeTime + "】");
            DbContext.SaveChanges();


            return(new ReturnResponse());
        }
Beispiel #4
0
        /// <summary>
        /// 开始升级
        /// </summary>
        /// <returns></returns>
        public ReturnResponse StartUpgrade(DTOEditUpgradeInfo dto)
        {
            //Repository<Prc_UpgradeInfoItem> repositoryItem = CreateRepository<Prc_UpgradeInfoItem>(access);
            Repository <Prc_UpgradeInfo> repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);

            Prc_UpgradeInfo editInfo = repositoryInfo.Get(a => a.ID == dto.ID);

            editInfo.UpgradeStatus    = EnumUpgradeStatus.Upgrading;
            editInfo.StartUpgradeTime = DateTime.Now;
            repositoryInfo.Update(editInfo);
            OperateLoger.Write(LoginUserInfo.CurrUser.UserName, DateTime.Now, "启动客户【" + editInfo.MallName + "】的升级");
            DbContext.SaveChanges();


            return(new ReturnResponse());
        }
Beispiel #5
0
        /// <summary>
        /// 查询升级信息细项
        /// </summary>
        /// <returns></returns>
        public DTOBackUpgradeInfoItem SearchUpgradeInfoItemByInfo([FromBody] DTOGetUpgradeInfoItem dto)
        {
            DTOBackUpgradeInfoItem result = new DTOBackUpgradeInfoItem();

            result.rows = new List <UpgradeInfoItem>();
            if (dto.UpgradeInfoID != Guid.Empty)
            {
                Repository <Prc_UpgradeInfoItem> repository     = new Repository <Prc_UpgradeInfoItem>(DbContext);
                Repository <Prc_UpgradeInfo>     repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);
                Prc_UpgradeInfo info = repositoryInfo.Get(a => a.ID == dto.UpgradeInfoID && !a.IsDelete);
                if (info == null)
                {
                    throw new Exception("未找到升级信息");
                }

                bool centerHeartLost = false;
                if ((DateTime.Now - info.HeartbeatTime).TotalMinutes > 15)
                {
                    centerHeartLost = true;
                }
                List <Prc_UpgradeInfoItem> infoItems = repository.Search(a => !a.IsDelete && a.UpgradeInfo.ID == dto.UpgradeInfoID);
                infoItems.ForEach(a =>
                {
                    UpgradeInfoItem infoItem = new UpgradeInfoItem()
                    {
                        ID               = a.ID,
                        BusinessType     = (int)a.BusinessType,
                        MallName         = a.BusinessName,
                        HeartbeatStatus  = centerHeartLost ? 1 : a.HeartbeatStatus,
                        UpgradeBagStatus = (int)a.UpgradeBagStatus,
                        UpgradeStatus    = (int)a.UpgradeStatus,
                        IsSingle         = info.IsSingle
                    };
                    result.rows.Add(infoItem);
                });
                if (infoItems.Count > 0)
                {
                    result.InfoUpgradeStatus = (int)info.UpgradeStatus;
                }
            }
            result.rows = result.rows.OrderBy(a => a.BusinessType).ThenBy(a => a.MallName).ToList();

            return(result);
        }
Beispiel #6
0
        public Dictionary <Guid, string> SaveMallMessage(List <Prc_UpgradeMessage> mallMsgs, Guid infoId)
        {
            Dictionary <Guid, string> failMsg = new Dictionary <Guid, string>();

            try
            {
                Repository <Prc_UpgradeMessage>  repositoryMsg  = new Repository <Prc_UpgradeMessage>(DbContext);
                Repository <Prc_UpgradeInfoItem> repositoryItem = new Repository <Prc_UpgradeInfoItem>(DbContext);
                Repository <Prc_UpgradeInfo>     repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);

                Prc_UpgradeInfo info = repositoryInfo.Get(a => a.ID == infoId && !a.IsDelete);
                if (info == null)
                {
                    throw new Exception("未找到升级信息");
                }

                List <string> busNum = new List <string>();
                mallMsgs.ForEach(a =>
                {
                    busNum.Add(a.BusinessNum);
                });

                List <Prc_UpgradeInfoItem> items = repositoryItem.Search(a => a.UpgradeInfo.ID == info.ID &&
                                                                         busNum.Contains(a.BusinessNum) && !a.IsDelete);

                mallMsgs.ForEach(a =>
                {
                    try
                    {
                        if (repositoryMsg.Get(b => b.ID == a.ID) == null)
                        {
                            var item = items.Find(b => b.BusinessNum == a.BusinessNum);
                            if (item == null)
                            {
                                throw new Exception(string.Format("未找到门店{0}的升级信息", a.BusinessNum));
                            }

                            Prc_UpgradeMessage msg = new Prc_UpgradeMessage()
                            {
                                ID = a.ID,
                                UpgradeInfoItem   = item,
                                Content           = a.Content,
                                MessageType       = (EnumMessageType)a.MessageType,
                                MessageFlag       = a.MessageFlag,
                                OccurTime         = a.OccurTime,
                                CreateOperateUser = "******",
                                LastUpdateTime    = DateTime.Now,
                                CreateTime        = DateTime.Now,
                                HandleStatus      = EnumHandleStatus.UnHandle
                            };
                            MessageHandle(msg, DbContext);
                            repositoryMsg.Add(msg);
                        }
                    }
                    catch (Exception ex)
                    {
                        failMsg.Add(a.ID, ex.Message);
                    }
                });
                DbContext.SaveChanges();
            }
            catch (Exception ex)
            {
                mallMsgs.ForEach(a =>
                {
                    if (!failMsg.ContainsKey(a.ID))
                    {
                        failMsg.Add(a.ID, ex.Message);
                    }
                });
            }
            return(failMsg);
        }
Beispiel #7
0
        /// <summary>
        /// 查询升级详情
        /// </summary>
        public DTOBackUpgradeDetail SearchUpgradeDetailByInfo([FromBody] DTOGetUpgradeDetail dto)
        {
            DTOBackUpgradeDetail result = new DTOBackUpgradeDetail()
            {
                rows = new List <UpgradeDetail>()
            };

            if (dto.UpgradeInfoID != Guid.Empty)
            {
                Repository <Prc_UpgradeInfoItem> repository = new Repository <Prc_UpgradeInfoItem>(DbContext);

                List <Prc_UpgradeInfoItem> infoItems = repository.Search(a => !a.IsDelete && a.UpgradeInfo.ID == dto.UpgradeInfoID);

                Repository <Prc_UpgradeInfo> repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);
                Prc_UpgradeInfo info = repositoryInfo.Get(a => a.ID == dto.UpgradeInfoID && !a.IsDelete);

                bool centerHeartLost = false;
                if ((DateTime.Now - info.HeartbeatTime).TotalMinutes > 15)
                {
                    centerHeartLost = true;
                }
                List <string> infoItemIds = new List <string>();

                infoItems.ForEach(a =>
                {
                    UpgradeDetail infoItem = new UpgradeDetail()
                    {
                        UpgradeInfoItemID = a.ID,
                        BusinessType      = (int)a.BusinessType,
                        MallName          = a.BusinessName,
                        HeartbeatStatus   = (a.UpgradeStatus == EnumUpgradeStatus.Reserved || a.UpgradeStatus == EnumUpgradeStatus.Upgrading) ? (centerHeartLost ? 1 : a.HeartbeatStatus) : -1,
                        UpgradeStatus     = (int)a.UpgradeStatus
                    };
                    if (a.UpgradeStatus == EnumUpgradeStatus.Reserved || a.UpgradeStatus == EnumUpgradeStatus.Upgrading)
                    {
                        infoItem.TimeConsum = a.StartUpgradeTime.HasValue ? (int)(DateTime.Now - a.StartUpgradeTime.GetValueOrDefault()).TotalMinutes : 0;
                    }
                    else
                    {
                        infoItem.TimeConsum = a.StartUpgradeTime.HasValue && a.EndUpgradeTime.HasValue ? (int)(a.EndUpgradeTime.GetValueOrDefault() - a.StartUpgradeTime.GetValueOrDefault()).TotalMinutes : 0;
                    }
                    infoItemIds.Add(a.ID.ToString());
                    result.rows.Add(infoItem);
                });

                string sqlText = string.Format(@"select * from
                                            (
                                            select *, ROW_NUMBER() over(partition by UpgradeInfoItemID order by OccurTime desc) as rowNum
                                            from Prc_UpgradeMessage where UpgradeInfoItemID in ('{0}')) ranked
                                            where ranked.rowNum <= 1", string.Join("','", infoItemIds));
                List <UpgradeDetail> msgList = repository.SearchBySql <UpgradeDetail>(sqlText);

                result.rows.ForEach(a => {
                    var msg = msgList.Find(m => m.UpgradeInfoItemID == a.UpgradeInfoItemID);
                    if (msg != null)
                    {
                        a.ID            = msg.ID;
                        a.MessageFlag   = msg.MessageFlag;
                        a.Content       = msg.Content;
                        a.OccurTime     = msg.OccurTime;
                        a.MessageType   = msg.MessageType;
                        a.HandleOptions = new List <string>();
                        a.HandleStatus  = msg.HandleStatus;
                        if (!string.IsNullOrWhiteSpace(msg.MessageFlag) && msg.MessageType == (int)EnumMessageType.Question)
                        {
                            if (msg.HandleStatus == 1)
                            {
                                if (QuestionMsgFlag.s_FlagToOperate.ContainsKey(a.MessageFlag))
                                {
                                    QuestionMsgFlag.s_FlagToOperate[a.MessageFlag].ForEach(b =>
                                    {
                                        a.HandleOptions.Add(b.ToString());
                                    });
                                }
                                else
                                {
                                    a.HandleOptions.Add(EnumQuestionResult.ReTry.ToString());
                                    a.HandleOptions.Add(EnumQuestionResult.Stop.ToString());
                                }
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(msg.Result))
                                {
                                    if (msg.Result == EnumQuestionResult.Stop.ToString())
                                    {
                                        a.Content += " => 终止";
                                    }
                                    else if (msg.Result == EnumQuestionResult.ReTry.ToString())
                                    {
                                        a.Content += " => 重试";
                                    }
                                    else if (msg.Result == EnumQuestionResult.Ignore.ToString())
                                    {
                                        a.Content += " => 忽略";
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        a.Content = string.Empty;
                    }
                });

                result.rows = result.rows.OrderBy(a => a.BusinessType).ThenBy(a => a.MallName).ToList();
            }
            return(result);
        }
Beispiel #8
0
        public DTOBackReserveUpgrade ReserveUpgrade([FromBody] DTOReserveUpgrade dto)
        {
            if (dto.BusinessInfos == null || dto.BusinessInfos.Count == 0)
            {
                throw new Exception("门店信息不能为空");
            }
            DTOBackReserveUpgrade            result         = new DTOBackReserveUpgrade();
            Repository <Prc_UpgradeInfo>     repositoryInfo = new Repository <Prc_UpgradeInfo>(DbContext);
            Repository <Prc_UpgradeInfoItem> repositoryItem = new Repository <Prc_UpgradeInfoItem>(DbContext);
            Repository <Prc_VersionInfo>     repositoryVer  = new Repository <Prc_VersionInfo>(DbContext);

            var oldInfo = repositoryInfo.Get(a => a.MallCode == dto.MallCode && !a.IsDelete && (a.UpgradeStatus == EnumUpgradeStatus.Reserved || a.UpgradeStatus == EnumUpgradeStatus.Upgrading));

            if (oldInfo != null)
            {
                if (oldInfo.TargetVersionID != dto.TargetVersionID)
                {
                    throw new Exception("平台存在未完成的预约");
                }
                else
                {
                    return(new DTOBackReserveUpgrade()
                    {
                        InfoID = oldInfo.ID
                    });
                }
            }

            Prc_VersionInfo upgradeVer = repositoryVer.Get(ver => ver.ID == dto.TargetVersionID && !ver.IsDelete);

            if (upgradeVer == null)
            {
                throw new Exception("未找到版本信息");
            }

            Prc_UpgradeInfo info = new Prc_UpgradeInfo()
            {
                BusinessCount     = dto.BusinessInfos.Count,
                ContactPerson     = dto.ContactPerson,
                ContactPhone      = dto.ContactPhone,
                MallCode          = dto.MallCode,
                MallName          = dto.MallName,
                OriginalVersionNo = dto.OriginalVersionNo,
                ReserveTime       = dto.ReserveTime,
                TargetVersionNo   = dto.TargetVersionNo,
                TargetVersionID   = upgradeVer.ID,
                CreateOperateUser = BLLUpgrade.SystemUser,
                UpgradeStatus     = EnumUpgradeStatus.Reserved,
                HeartbeatTime     = DateTime.Now,
                IsSingle          = dto.IsSingle,
                ApplyTime         = dto.ApplyTime
            };

            repositoryInfo.Add(info);
            dto.BusinessInfos.ForEach(a =>
            {
                Prc_UpgradeInfoItem item = new Prc_UpgradeInfoItem()
                {
                    BusinessNum       = a.BusinessNum,
                    BusinessType      = (EnumBusinessType)a.BusinessType,
                    CreateOperateUser = BLLUpgrade.SystemUser,
                    BusinessName      = a.BusinessName,
                    HeartbeatStatus   = -1,
                    UpgradeInfo       = info,
                    UpgradeStatus     = EnumUpgradeStatus.Reserved,
                    UpgradeBagStatus  = EnumUpgradeBagStatus.None
                };
                repositoryItem.Add(item);
            });
            result.InfoID = info.ID;
            DbContext.SaveChanges();

            return(result);
        }