//保存 private void btnSave_Click(object sender, System.Windows.RoutedEventArgs e) { //验证输入 ValidationManager.Validate(formData); var vm = formData.DataContext as SOComplaintInfoVM; if (vm.ValidationErrors.Count != 0) { return; } var req = vm.ConvertVM <SOComplaintInfoVM, SOComplaintInfo>(); m_facade.Update(req, (o, args) => { if (!args.FaultsHandle()) { Window.Alert(ResSO.Msg_SaveSuccess); m_data = args.Result; BindPage(); ////是否需要发送邮件 //if (m_data.ProcessInfo.ReplyType == SOComplainReplyType.Email // && !string.IsNullOrEmpty(m_data.ComplaintCotentInfo.CustomerEmail)) //{ // btnEmail.Visibility = System.Windows.Visibility.Visible; //} } }); }
/// <summary> /// 添加投诉信息 /// </summary> /// <param name="info"></param> /// <returns></returns> public SOComplaintInfo InsertComplainMaster(SOComplaintInfo info) { DataCommand command = DataCommandManager.GetDataCommand("CreateComplainMaster"); command.SetParameterValue("@CompanyCode", info.ComplaintCotentInfo.CompanyCode); command.SetParameterValue("@SOSysNo", info.ComplaintCotentInfo.SOSysNo); command.SetParameterValue("@ComplainType", info.ComplaintCotentInfo.ComplainType); command.SetParameterValue("@ComplainSourceType", info.ComplaintCotentInfo.ComplainSourceType); command.SetParameterValue("@Subject", info.ComplaintCotentInfo.Subject); command.SetParameterValue("@ComplainContent", info.ComplaintCotentInfo.ComplainContent); command.SetParameterValue("@CustomerEmail", info.ComplaintCotentInfo.CustomerEmail); command.SetParameterValue("@CustomerPhone", info.ComplaintCotentInfo.CustomerPhone); command.SetParameterValue("@ReplyContent", info.ProcessInfo.ReplyContent); command.SetParameterValue("@CreateCustomerSysNo", info.ComplaintCotentInfo.CustomerSysNo); command.SetParameterValue("@CreateDate", info.ComplaintCotentInfo.ComplainTime); command.SetParameterValue("@Status", info.ProcessInfo.Status); command.SetParameterValue("@ReplySourceType", info.ProcessInfo.ReplyType); command.SetParameterValue("@ResponsibleDept", info.ProcessInfo.ResponsibleDepartment); command.SetParameterValue("@ComplainNote", info.ProcessInfo.ComplainNote); command.SetParameterValue("@AssignerSysNo", info.ProcessInfo.AssignerSysNo); command.SetParameterValue("@AssignDate", info.ProcessInfo.AssignDate); command.SetParameterValue("@OperatorSysNo", info.ProcessInfo.OperatorSysNo); command.SetParameterValue("@CSConfirmComplainType", info.ProcessInfo.CSConfirmComplainType); command.SetParameterValue("@CSConfirmComplainTypeDetail", info.ProcessInfo.CSConfirmComplainTypeDetail); command.SetParameterValue("@ResponsibleUser", info.ProcessInfo.ResponsibleUser); command.ExecuteNonQuery(); info.SysNo = Convert.ToInt32(command.GetParameterValue("@SysNo")); return(info); }
/// <summary> /// 获取历史记录 /// </summary> /// <param name="info"></param> /// <returns></returns> public List <SOComplaintReplyInfo> GetHistory(SOComplaintInfo info) { CustomDataCommand cmd = DataCommandManager.CreateCustomDataCommandFromConfig("SO_Query_ComplainHistory"); cmd.AddInputParameter("@ComplainSysNo", DbType.Int32, info.SysNo.Value); return(cmd.ExecuteEntityList <SOComplaintReplyInfo>()); }
//添加回复历史记录 /// <summary> /// 添加回复历史记录 /// </summary> /// <param name="soComplaintInfo">投诉实体</param> /// <param name="isAdd">是否是添加,会影响history属性的赋值</param> private void AddHistory(SOComplaintInfo soComplaintInfo, ReplyOperatorType optType) { SOComplaintReplyInfo info = new SOComplaintReplyInfo(); info.ComplainSysNo = soComplaintInfo.SysNo.Value; //以后的内容不同,最好还是分开写 switch (optType) { case ReplyOperatorType.Add: info.HistoryContent = ResourceHelper.Get("SO_Complain_CreateHistoryBy", ServiceContext.Current.UserSysNo, DateTime.Now); break; case ReplyOperatorType.Update: info.HistoryContent = ResourceHelper.Get("SO_Complain_UpdateHistoryBy", ServiceContext.Current.UserSysNo, DateTime.Now); break; case ReplyOperatorType.SendMain: info.HistoryContent = ResourceHelper.Get("SO_Complain_ReplyHistoryBy", ServiceContext.Current.UserSysNo, DateTime.Now); break; } info.ReplyContent = soComplaintInfo.ProcessInfo.ReplyContent; info.ReplyType = soComplaintInfo.ProcessInfo.ReplyType; info.Status = soComplaintInfo.ProcessInfo.Status; m_da.InsertHistory(info); }
public SOComplaintInfo UpdateComplain(SOComplaintInfo info) { if (info != null && info.ComplaintCotentInfo != null && info.ProcessInfo != null) { info = ObjectFactory <SOComplainAppService> .Instance.UpdateSOComplaintInfo(info); } return(info); }
public SOComplaintInfo CreateComplain(SOComplaintCotentInfo info) { SOComplaintInfo soComplaintInfo = null; if (info != null) { soComplaintInfo = ObjectFactory <SOComplainAppService> .Instance.AddSOComplaintInfo(info); } return(soComplaintInfo); }
/// <summary> /// 更新投诉信息 /// </summary> /// <param name="info"></param> /// <returns></returns> public SOComplaintInfo UpdateComplainMaster(SOComplaintInfo info) { DataCommand command = DataCommandManager.GetDataCommand("UpdateComplain_Master"); command.SetParameterValue("@SysNo", info.SysNo); command.SetParameterValue("@SOSysNo", info.ComplaintCotentInfo.SOSysNo); command.SetParameterValue("@ComplainType", info.ComplaintCotentInfo.ComplainType); command.SetParameterValue("@ComplainSourceType", info.ComplaintCotentInfo.ComplainSourceType); command.SetParameterValue("@Subject", info.ComplaintCotentInfo.Subject); command.SetParameterValue("@ComplainContent", info.ComplaintCotentInfo.ComplainContent); command.SetParameterValue("@CustomerEmail", info.ComplaintCotentInfo.CustomerEmail); command.SetParameterValue("@CustomerPhone", info.ComplaintCotentInfo.CustomerPhone); command.SetParameterValue("@ReplyContent", info.ProcessInfo.ReplyContent); command.SetParameterValue("@Status", info.ProcessInfo.Status); command.SetParameterValue("@ReplySourceType", info.ProcessInfo.ReplyType); command.SetParameterValue("@ResponsibleDept", info.ProcessInfo.ResponsibleDepartment); command.SetParameterValue("@ProductID", info.ProcessInfo.ProductID); command.SetParameterValue("@DomainSysNo", info.ProcessInfo.DomainSysNo); command.SetParameterValue("@ComplainNote", info.ProcessInfo.ComplainNote); command.SetParameterValue("@AssignerSysNo", info.ProcessInfo.AssignerSysNo); command.SetParameterValue("@AssignDate", info.ProcessInfo.AssignDate); command.SetParameterValue("@OperatorSysNo", info.ProcessInfo.OperatorSysNo); command.SetParameterValue("@CSConfirmComplainType", info.ProcessInfo.CSConfirmComplainType); command.SetParameterValue("@CSConfirmComplainTypeDetail", info.ProcessInfo.CSConfirmComplainTypeDetail); command.SetParameterValue("@ResponsibleUser", info.ProcessInfo.ResponsibleUser); command.SetParameterValue("@HistoryContent", info.ProcessInfo.ReplyContent); command.SetParameterValue("@SpendHours", info.ProcessInfo.SpendHours); if (info.ProcessInfo.IsSure.HasValue) { command.SetParameterValue("@DutyIdentification", info.ProcessInfo.IsSure.Value ? 'Y' : 'N'); } else { command.SetParameterValue("@DutyIdentification", DBNull.Value); } command.SetParameterValue("@CreateUserSysNo", ServiceContext.Current.UserSysNo); command.SetParameterValue("@OrderType", info.ProcessInfo.OrderType); command.SetParameterValue("@ExtensionFlag", info.ProcessInfo.ExtensionFlag); command.SetParameterValue("@ReopenCount", info.ProcessInfo.ReopenCount); if (info.ProcessInfo.Status == SOComplainStatus.Complete) { command.SetParameterValue("@UpdateDate", info.ProcessInfo.ProcessTime);//投诉处理时间 } else { command.SetParameterValue("@UpdateDate", System.DBNull.Value); } command.SetParameterValue("@ReasonCodeSysNo", info.ProcessInfo.ReasonCodeSysNo); command.ExecuteNonQuery(); info.SysNo = Convert.ToInt32(command.GetParameterValue("@SysNo")); return(info); }
//添加投诉 /// <summary> /// 添加投诉 /// </summary> /// <param name="info">请求的实体</param> public virtual SOComplaintInfo Create(SOComplaintCotentInfo info) { if (info.Subject != null) { info.Subject = info.Subject.Trim(); } SOInfo soEntity = null; if (info.SOSysNo.HasValue) { soEntity = ObjectFactory <SOProcessor> .Instance.GetSOBySOSysNo(info.SOSysNo.Value); if (null == soEntity) { BizExceptionHelper.Throw("SO_SOIsNotExist"); } info.CustomerSysNo = soEntity.BaseInfo.CustomerSysNo; //如果传入的邮箱和电话都是空的,需要获取用户邮箱和电话 if (string.IsNullOrEmpty(info.CustomerPhone) && string.IsNullOrEmpty(info.CustomerEmail)) { CustomerInfo customerInfo = ExternalDomainBroker.GetCustomerInfo(info.CustomerSysNo.Value); info.CustomerEmail = customerInfo.BasicInfo.Email; info.CustomerPhone = customerInfo.BasicInfo.Phone; } } if (string.IsNullOrEmpty(info.ComplainSourceType)) { info.ComplainSourceType = AppSettingHelper.ComplainSourceTypeDefault; } object oldComplainID = null; SOComplaintInfo soComplaintInfo = new SOComplaintInfo(); soComplaintInfo.ComplaintCotentInfo = info; if (ObjectFactory <ISOComplainDA> .Instance.IsSameCaseExist(info, ref oldComplainID)) { soComplaintInfo.ProcessInfo.Status = SOComplainStatus.Abandoned; soComplaintInfo.ProcessInfo.ComplainNote = ResourceHelper.Get("SO_Complain_SameOrder", oldComplainID); } if (!string.IsNullOrEmpty(soComplaintInfo.ComplaintCotentInfo.ComplainContent)) { soComplaintInfo.ComplaintCotentInfo.ComplainContent = ResourceHelper.Get("SO_Complain_ContentFormat" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + "\r\n" + soComplaintInfo.ComplaintCotentInfo.ComplainContent; } soComplaintInfo.ComplaintCotentInfo.ComplainTime = DateTime.Now; m_da.InsertComplainMaster(soComplaintInfo); AddHistory(soComplaintInfo, ReplyOperatorType.Add); return(soComplaintInfo); }
//获取根据编号投诉 /// <summary> /// 获取根据编号投诉 /// </summary> /// <param name="sysNo">投诉的唯一编号</param> /// <returns>投诉实体</returns> public virtual SOComplaintInfo GetInfo(int sysNo) { SOComplaintInfo info = m_da.GetBySysNo(sysNo); if (info == null) { BizExceptionHelper.Throw("SO_Complain_IsNotExist"); } return(info); }
private void BindData() { int loadCompletedCount = 0; int wellLoadedCount = 3; this.cmbStatus.ItemsSource = EnumConverter.GetKeyValuePairs <SOComplainStatus>(); this.cmbResponsibleConfirm.ItemsSource = BooleanConverter.GetKeyValuePairs(EnumConverter.EnumAppendItemType.Select); this.cmbApproach.ItemsSource = EnumConverter.GetKeyValuePairs <SOComplainReplyType>(); //获取投诉详细部门集合 CodeNamePairHelper.GetList(ConstValue.DomainName_SO , ConstValue.Key_SOResponsibleDept , CodeNamePairAppendItemType.Select , (o, p) => { m_csDeptList = p.Result; Interlocked.Increment(ref loadCompletedCount); if (loadCompletedCount == wellLoadedCount) { BindPage(); } }); //读取下拉框值 CodeNamePairHelper.GetList(ConstValue.DomainName_SO , new string[] { ConstValue.Key_ComplainType, ConstValue.Key_SOComplainSourceType } , (o, p) => { this.cmbComplainType.ItemsSource = p.Result[ConstValue.Key_ComplainType]; this.cmbComplainSourceType.ItemsSource = p.Result[ConstValue.Key_SOComplainSourceType]; Interlocked.Increment(ref loadCompletedCount); if (loadCompletedCount == wellLoadedCount) { BindPage(); } }); //获取值 m_facade.Get(int.Parse(Request.Param), (o, e) => { if (!e.FaultsHandle()) { m_data = e.Result; Interlocked.Increment(ref loadCompletedCount); if (loadCompletedCount == wellLoadedCount) { BindPage(); } } }); }
public SOComplaintInfo GetBySysNo(int sysNo) { SOComplaintInfo info = new SOComplaintInfo(); //加载主实体 var c = new ComplainQueryFilter(); c.PagingInfo = new PagingInfo(); c.SystemNumber = sysNo; //无需过滤无效订单号 c.ValidCase = false; int count = 0; var dt = ObjectFactory <ISOQueryDA> .Instance.ComplainQuery(c, out count, false); if (count == 1) { //映射订单投诉内容信息 info.ComplaintCotentInfo = DataMapper.GetEntity <SOComplaintCotentInfo>(dt.Rows[0], true, true, (o, e) => { e.ComplainTime = Convert.ToDateTime(o["CreateDate"]); }); info.SysNo = info.ComplaintCotentInfo.SysNo; //映射订单投诉处理信息 info.ProcessInfo = DataMapper.GetEntity <SOComplaintProcessInfo>(dt.Rows[0], true, true, (o, e) => { if (o["DutyIdentification"].ToString().Length > 0) { e.IsSure = o["DutyIdentification"].ToString() == "Y" ? true : false; } }); } else { return(null); } //加载历史回复 info.ReplyHistory = GetHistory(info); return(info); }
/// <summary> /// 修改投诉信息 /// </summary> /// <param name="info"></param> public virtual SOComplaintInfo UpdateSOComplaintInfo(SOComplaintInfo info) { return(ComplainProcessor.Update(info)); }
public SOComplaintInfo ProcessComplain(SOComplaintInfo info) { return(ObjectFactory <SOComplainProcessor> .Instance.Update(info)); }
public void Update(SOComplaintInfo req, EventHandler <RestClientEventArgs <SOComplaintInfo> > callback) { restClient.Update("/SOService/SO/UpdateComplain", req, callback); }
//更新 订单投诉信息 /// <summary> /// 更新 订单投诉信息 /// </summary> /// <param name="info">请求的实体</param> /// <returns>修改后的订单</returns> public virtual SOComplaintInfo Update(SOComplaintInfo info) { if (!info.ProcessInfo.IsSure.HasValue && (info.ProcessInfo.Status == SOComplainStatus.Review || info.ProcessInfo.Status == SOComplainStatus.Dealing || info.ProcessInfo.Status == SOComplainStatus.Complete)) { BizExceptionHelper.Throw("SO_Complain_UpdateAuditError"); } if (info.ProcessInfo.ReasonCodeSysNo.HasValue) { var reasonPath = ExternalDomainBroker.GetReasonCodePath(info.ProcessInfo.ReasonCodeSysNo.Value, info.ComplaintCotentInfo.CompanyCode); //spilt reasonPath var reasons = reasonPath.Split('>'); if (reasons.Length > 1) { //构造投诉大类 info.ProcessInfo.CSConfirmComplainType = reasons[1]; if (reasons.Length > 2) { //构造投诉类别 info.ProcessInfo.CSConfirmComplainTypeDetail = reasons[2]; if (reasons.Length > 3) { info.ProcessInfo.ResponsibleDepartment = CodeNamePairManager.GetCode(SOConst.DomainName, "ResponsibleDept", reasons[3]); } } } } //处理情况加入到投诉内容中 if (!string.IsNullOrEmpty(info.ProcessInfo.ProcessedNote)) { info.ComplaintCotentInfo.ComplainContent = info.ComplaintCotentInfo.ComplainContent + "\r\n\r\n" + ResourceHelper.Get("SO_Complain_ContentFormat" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") ) + "\r\n" + info.ProcessInfo.ProcessedNote.Trim(); info.ProcessInfo.ProcessedNote = null; } //复核审查 if (info.ProcessInfo.Status == SOComplainStatus.Review) { //如果是复核状态 info.ProcessInfo.ReopenCount++; } else if (info.ProcessInfo.Status == SOComplainStatus.Complete) { //如果是处理完毕,更新所用工时 double worktime = CommonUtility.CalWorkMinute(info.ComplaintCotentInfo.ComplainTime.Value, DateTime.Now, 0); info.ProcessInfo.SpendHours = Convert.ToInt32(worktime / 60); } info = m_da.UpdateComplainMaster(info); AddHistory(info, ReplyOperatorType.Update); //重新获取日志 info.ReplyHistory = m_da.GetHistory(info); //处理完毕和作废的最终状态通知客户 if (info.ProcessInfo.Status == SOComplainStatus.Abandoned || info.ProcessInfo.Status == SOComplainStatus.Complete) { //更新CallingStatus ExternalDomainBroker.CallingCustomStatus(info.SysNo.Value , CallingReferenceType.Complain , info.ProcessInfo.ComplainNote); } return(info); }