示例#1
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);
        }