/// <summary> /// 保存总包号 和 总包与福邮的关系 /// </summary> /// <param name="mainPostTag">总局袋牌</param> /// <param name="re">关系数据</param> /// <returns></returns> public bool SaveMainPostBagTag(MailTotalPackageInfo mainPostTag, MailTotalPackageOrPostBagRelational re) { var ctx = this.UnitOfWork as LMS_DbContext; lock (_lockSaveMainPostBagTag) { if (ctx.MailTotalPackageOrPostBagRelationals.Any(t => t.PostBagNumber == re.PostBagNumber)) { throw new BusinessLogicException("[福邮袋牌号]已经扫描过了."); } using (var tran = new TransactionScope(TransactionScopeOption.Required)) { if (!ctx.MailTotalPackageInfos.Any(t => t.MailTotalPackageNumber == mainPostTag.MailTotalPackageNumber)) //不存在 { DateTime fiveDaysAgo = DateTime.Now.AddDays(-5); //5天之前是否存在 if (ctx.MailTotalPackageInfos.Any(t => t.TotalPackageNumber == mainPostTag.TotalPackageNumber && t.CreatedOn >= fiveDaysAgo)) { //替换MailTotalPackageNumber mainPostTag.MailTotalPackageNumber = ctx.MailTotalPackageInfos .Where(t => t.TotalPackageNumber == mainPostTag.TotalPackageNumber && t.CreatedOn >= fiveDaysAgo) .OrderByDescending(p => p.CreatedOn) .Select(t => t.MailTotalPackageNumber) .FirstOrDefault(); } else { //insert MailTotalPackageInfo ctx.MailTotalPackageInfos.Add(mainPostTag); } } //insert MailTotalPackageOrPostBagRelational re.MailTotalPackageNumber = mainPostTag.MailTotalPackageNumber; ctx.MailTotalPackageOrPostBagRelationals.Add(re); ctx.SaveChanges(); tran.Complete(); } return(true); } // throw new NotImplementedException(); }
public ResultInfo MainPostNumberSave(string fuPostNumber, string mainPostNumber) { ResultInfo result = new ResultInfo(); MailTotalPackageInfo m = new MailTotalPackageInfo(); string mainCountryCode = ""; string fuCountryCode = ""; string fourBagNumberStr = GetMainPackageNumber(mainPostNumber); if (string.IsNullOrWhiteSpace(fourBagNumberStr)) { result.Status = false; result.Message = "[总包号]不合法."; return(result); } int fourBagNumber; int.TryParse(fourBagNumberStr, out fourBagNumber); m.MailTotalPackageNumber = DateTime.Now.ToString("yyyyMMdd") + fourBagNumberStr; m.TotalPackageNumber = mainPostNumber; m.ShortNumber = fourBagNumber; m.ScanTime = DateTime.Now; m.TrackStatus = 0; m.CreatedBy = _workContext.User.UserUame; m.CreatedOn = DateTime.Now; DateTime?dt = null; m.TaiWanArrivedTime = dt; m.TaiWanDepartureTime = dt; m.ToArrivedTime = dt; m.FuZhouDepartureTime = dt; m.LastUpdatedOn = DateTime.Now; m.LastUpdatedBy = _workContext.User.UserUame; MailTotalPackageOrPostBagRelational re = new MailTotalPackageOrPostBagRelational(); re.CreatedBy = _workContext.User.UserUame; re.CreatedOn = DateTime.Now; //re.MailTotalPackageNumber //获取客袋带牌号信息 var mailPostBagInfo = _mailPostBagInfoRepository.GetYunExpressBagNumber(fuPostNumber); if (mailPostBagInfo != null) { re.PostBagNumber = mailPostBagInfo.PostBagNumber; fuCountryCode = mailPostBagInfo.CountryCode.ToUpperInvariant(); } re.ScanTime = DateTime.Now; re.LastUpdatedOn = DateTime.Now; re.LastUpdatedBy = _workContext.User.UserUame; if (mainPostNumber.Length > 8) { mainCountryCode = mainPostNumber.Substring(6, 2).ToUpperInvariant(); } // 国际小包U+ 总包号扫描校验客户袋牌与总包号对应国家是否一致。 // Add by zhengsong if (string.IsNullOrWhiteSpace(mainCountryCode) || string.IsNullOrWhiteSpace(fuCountryCode) || mainCountryCode != fuCountryCode) { result.Status = false; result.Message = "客户袋牌与总包号对应国家不一致,请检查是否贴错!关联不成功!"; return(result); } if (string.IsNullOrWhiteSpace(re.PostBagNumber)) { result.Status = false; result.Message = "未找到[福邮袋牌]或者[总包号]."; return(result); } try { if (_mailTotalPackageInfoRepository.SaveMainPostBagTag(m, re)) { result.Status = true; return(result); } } catch (BusinessLogicException ex) { result.Message = ex.Message; } catch (Exception ex) { Log.Exception(ex); } result.Status = false; if (string.IsNullOrWhiteSpace(result.Message)) { result.Message = "服务器内部错误."; } return(result); }