/// <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(); }
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); }
/// <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()); }
/// <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()); }
/// <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); }
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); }
/// <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); }
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); }