コード例 #1
0
        //保存
        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;
                    //}
                }
            });
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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>());
        }
コード例 #4
0
        //添加回复历史记录
        /// <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);
        }
コード例 #5
0
ファイル: SOService_Complain.cs プロジェクト: sanlonezhang/ql
 public SOComplaintInfo UpdateComplain(SOComplaintInfo info)
 {
     if (info != null && info.ComplaintCotentInfo != null && info.ProcessInfo != null)
     {
         info = ObjectFactory <SOComplainAppService> .Instance.UpdateSOComplaintInfo(info);
     }
     return(info);
 }
コード例 #6
0
ファイル: SOService_Complain.cs プロジェクト: sanlonezhang/ql
        public SOComplaintInfo CreateComplain(SOComplaintCotentInfo info)
        {
            SOComplaintInfo soComplaintInfo = null;

            if (info != null)
            {
                soComplaintInfo = ObjectFactory <SOComplainAppService> .Instance.AddSOComplaintInfo(info);
            }
            return(soComplaintInfo);
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        //添加投诉
        /// <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);
        }
コード例 #9
0
        //获取根据编号投诉
        /// <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);
        }
コード例 #10
0
        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();
                    }
                }
            });
        }
コード例 #11
0
        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);
        }
コード例 #12
0
 /// <summary>
 /// 修改投诉信息
 /// </summary>
 /// <param name="info"></param>
 public virtual SOComplaintInfo UpdateSOComplaintInfo(SOComplaintInfo info)
 {
     return(ComplainProcessor.Update(info));
 }
コード例 #13
0
 public SOComplaintInfo ProcessComplain(SOComplaintInfo info)
 {
     return(ObjectFactory <SOComplainProcessor> .Instance.Update(info));
 }
コード例 #14
0
 public void Update(SOComplaintInfo req, EventHandler <RestClientEventArgs <SOComplaintInfo> > callback)
 {
     restClient.Update("/SOService/SO/UpdateComplain", req, callback);
 }
コード例 #15
0
        //更新 订单投诉信息
        /// <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);
        }