//更新 订单投诉信息 /// <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); }