Example #1
0
        internal bool CreateErrorOrderSortingLog(List <ThreadSortOrder> ThreadSortOrderList, UserInfo userInfo, int operationType)
        {
            try
            {
                //记录分拣日志

                using (var db = new OrderSortingDBEntities())
                {
                    foreach (ThreadSortOrder entity in ThreadSortOrderList)
                    {
                        for (int i = 0; i < entity.TargetLattice.Count; i++)
                        {
                            OrderSortingLog sortingLog = NewOrderSortingLog(entity.OrderInfo, entity.TargetLattice[i], entity.ResultLattice, userInfo, operationType, 3);
                            db.OrderSortingLog.Add(sortingLog);
                        }
                    }
                    db.SaveChanges();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                SaveErrLogHelper.SaveErrorLog(string.Empty, ex.ToString());
                return(false);
            }
        }
Example #2
0
 /// <summary>
 /// 更新格口与国家地区的关联
 /// </summary>
 /// <param name="latticesetting">格口信息</param>
 /// <param name="countrysList">国家地区</param>
 internal void UpdateSolutionCountry(LatticeSetting latticesetting, List <Countrys> countrysList)
 {
     try
     {
         var newData = (from pt in countrysList
                        select new SolutionCountry
         {
             Id = Guid.NewGuid().ToString(),
             SortingSolutionId = _sortingSolution,
             CabinetId = latticesetting.CabinetId,
             LatticeSettingId = latticesetting.ID,
             CountryId = pt.ID,
             CountryName = pt.CnName
         });
         using (var db = new OrderSortingDBEntities())
         {
             var oldData = db.SolutionCountry.Where(sp => sp.LatticeSettingId == latticesetting.ID && sp.SortingSolutionId == _sortingSolution);
             db.SolutionCountry.RemoveRange(oldData);
             db.SolutionCountry.AddRange(newData);
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         throw;
     }
     finally
     {
         _solutionCountryList = GetSolutionCountryList();
     }
 }
Example #3
0
        /// <summary>
        /// 根据订单号撤回分拣
        /// </summary>
        /// <param name="orderIdArra"></param>
        /// <returns></returns>
        internal string DeleteOrderCacheByOrderId(string[] orderIdArra)
        {
            try
            {
                using (var db = new OrderSortingDBEntities())
                {
                    //验证
                    foreach (string orderID in orderIdArra)
                    {
                        if (orderID == "")
                        {
                            continue;
                        }
                        if (db.LatticeOrdersCache.Where(o => o.OrderId == orderID).Count() <= 0)
                        {
                            return($"撤回失败,未找到订单号:{orderID},请核对订单号是否正确!");
                        }
                    }

                    var logCache = db.LatticeOrdersCache.Where(o => orderIdArra.Contains(o.OrderId));

                    db.LatticeOrdersCache.RemoveRange(logCache);
                    db.SaveChanges();
                    //重新统计分拣信息
                    LoadTotalSortingDataList(db);
                }
                return($"撤回成功!");
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #4
0
 /// <summary>
 ///  更新格口与邮寄方式地区的关联
 /// </summary>
 /// <param name="latticesetting"></param>
 /// <param name="posttypeslist"></param>
 internal void UpdateSolutionPostArea(LatticeSetting latticesetting, List <PostArea> postArealist, string PostTypeId)
 {
     try
     {
         var newData = (from pt in postArealist
                        select new SolutionPostArea
         {
             ID = Guid.NewGuid().ToString(),
             SortingSolutionId = _sortingSolution,
             Type = pt.Type,
             Area = pt.Area,
             Flag = pt.Flag,
             PostTypeId = pt.PostTypeId,
             LactticeSettingId = latticesetting.ID,
             CabinetId = latticesetting.CabinetId
         });
         using (var db = new OrderSortingDBEntities())
         {
             var oldData = db.SolutionPostArea.Where(sp => sp.LactticeSettingId == latticesetting.ID && sp.CabinetId == latticesetting.CabinetId && sp.PostTypeId == PostTypeId && sp.SortingSolutionId == _sortingSolution);
             db.SolutionPostArea.RemoveRange(oldData);
             db.SolutionPostArea.AddRange(newData);
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         throw;
     }
     finally
     {
         _solutionPostAreaList = GetSolutionPostAreaList();
     }
 }
Example #5
0
 /// <summary>
 /// 更新格口与邮寄方式的关联
 /// </summary>
 /// <param name="latticesetting">格口信息</param>
 /// <param name="posttypesList">邮寄方式</param>
 internal void UpdateSolutionPostType(LatticeSetting latticesetting, List <Posttypes> posttypeslist)
 {
     try
     {
         var newData = (from pt in posttypeslist
                        select new SolutionPostType
         {
             Id = Guid.NewGuid().ToString(),
             SortingSolutionId = _sortingSolution,
             CabinetId = latticesetting.CabinetId,
             LatticeSettingId = latticesetting.ID,
             PostTypeId = pt.PostID,
             PostTypeName = pt.CnPostName,
         });
         using (var db = new OrderSortingDBEntities())
         {
             var oldData = db.SolutionPostType.Where(sp => sp.LatticeSettingId == latticesetting.ID && sp.SortingSolutionId == _sortingSolution);
             db.SolutionPostType.RemoveRange(oldData);
             db.SolutionPostType.AddRange(newData);
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         throw;
     }
     finally
     {
         _solutionPostTypeList = GetSolutionPostTypeList();
     }
 }
 /// <summary>
 /// 创建装箱记录(operationType:1自动满格,2手动满格,3打印包牌号)
 /// </summary>
 /// <param name="lattice">柜格</param>
 /// <param name="userInfo">用户信息</param>
 /// <param name="boxWeight">箱子重量</param>
 /// <param name="operationType">操作类型:1自动满格,2手动满格,3打印包牌号</param>
 /// <returns></returns>
 internal override PackingLog CreatePackingLog(LatticeSetting lattice, UserInfo userInfo, decimal boxWeight, out List <LatticeOrdersCache> LatticeOrdersCacheList, int operationType = 3)
 {
     Debug.WriteLine("CreatePackingLog begin 2");
     using (var db = new OrderSortingDBEntities())
     {
         var logCache = db.LatticeOrdersCache.Where(o => o.LatticesettingId == lattice.ID);
         if (logCache == null || logCache.Count() < 1)
         {
             LatticeOrdersCacheList = null;
             return(null);
         }
         var logList = logCache.ToList();
         LatticeOrdersCacheList = logList;
         PackingLog pkgLog = NewPackingLog(lattice, userInfo, operationType, logList, boxWeight);
         db.PackingLog.Add(pkgLog);
         db.LatticeOrdersCache.RemoveRange(logList);
         var response = API_Helper.BatchOutbound(userInfo, pkgLog, logList);
         if (response != null && !response.Success && !string.IsNullOrWhiteSpace(response.Message))
         {
             throw new Exception(response.Message);
         }
         db.SaveChanges();
         return(pkgLog);
     }
 }
Example #7
0
        /// <summary>
        /// 创建分拣记录
        /// </summary>
        /// <param name="info">订单信息</param>
        /// <param name="targetLattice">目标柜格</param>
        /// <param name="resultLattice">投入柜格</param>
        /// <param name="operationType">操作类型:1扫描,2投递,3异常恢复</param>
        /// <param name="status">状态:1待投递,2已投递,3投递异常,4重复扫描</param>
        internal bool CreateOrderSortingLog(OrderInfo info, LatticeSetting targetLattice, LatticeSetting resultLattice, UserInfo userInfo, int operationType, int status)
        {
            try
            {
                //记录分拣日志
                OrderSortingLog sortingLog = NewOrderSortingLog(info, targetLattice, resultLattice, userInfo, operationType, status);
                using (var db = new OrderSortingDBEntities())
                {
                    db.OrderSortingLog.Add(sortingLog);
                    //正确投入,计数
                    if (status == 2 && !db.LatticeOrdersCache.Any(o => o.OrderId == info.OrderId))
                    {
                        var countryEnName = db.Countrys.Where(cntr => cntr.ID == info.CountryId || cntr.EnShorting == info.CountryId).Select(cnt => cnt.EnName).FirstOrDefault();
                        db.LatticeOrdersCache.Add(new LatticeOrdersCache()
                        {
                            LatticesettingId = resultLattice.ID,
                            OrderId          = info.OrderId,
                            TraceId          = info.TraceId,
                            Weight           = info.Weight,
                            CountryId        = info.CountryId,
                            CountryName      = countryEnName,
                            PostId           = info.PostId,
                            PostName         = info.PostName
                        });

                        db.SaveChanges();
                        //重新统计分拣信息
                        LoadTotalSortingDataList(db);
                    }
                    else
                    {
                        db.SaveChanges();
                    }
                    return(true);
                }
            }
            catch (Exception ex)
            {
                SaveErrLogHelper.SaveErrorLog(string.Empty, ex.ToString());
                return(false);
            }
        }
Example #8
0
 /// <summary>
 /// 根据Id删除分拣方案
 /// </summary>
 /// <param name="id"></param>
 internal static void DeleteSortingSolutionsById(string id)
 {
     using (var db = new OrderSortingDBEntities())
     {
         var ss = db.SortingSolutions.Find(id);
         db.SortingSolutions.Remove(ss);
         var spt = db.SolutionPostType.Where(sp => sp.SortingSolutionId == id);
         db.SolutionPostType.RemoveRange(spt);
         var sc = db.SolutionCountry.Where(sp => sp.SortingSolutionId == id);
         db.SolutionCountry.RemoveRange(sc);
         db.SaveChanges();
     }
 }
Example #9
0
 /// <summary>
 /// 保存格口设置信息
 /// </summary>
 /// <param name="latticesetting"></param>
 internal void SaveLatticeSetting(LatticeSetting latticesetting)
 {
     try
     {
         using (var db = new OrderSortingDBEntities())
         {
             db.LatticeSetting.AddOrUpdate(latticesetting);
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #10
0
 /// <summary>
 /// 根据格号撤回分拣
 /// </summary>
 /// <param name="latticeId"></param>
 /// <returns></returns>
 internal string DeleteOrderCacheByLatticeId(string latticeId)
 {
     try
     {
         using (var db = new OrderSortingDBEntities())
         {
             var lattice  = db.LatticeSetting.FirstOrDefault(ls => ls.LatticeId == latticeId);
             var logCache = db.LatticeOrdersCache.Where(o => o.LatticesettingId == lattice.ID);
             db.LatticeOrdersCache.RemoveRange(logCache);
             db.SaveChanges();
             //重新统计分拣信息
             LoadTotalSortingDataList(db);
         }
         return("撤回成功!");
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #11
0
 /// <summary>
 /// 新建分拣方案
 /// </summary>
 /// <param name="solutionName"></param>
 /// <returns></returns>
 internal string CreateNewSolution(string solutionName)
 {
     try
     {
         var SolutionId = Guid.NewGuid().ToString();
         using (var db = new OrderSortingDBEntities())
         {
             if (db.SortingSolutions.Any(ss => ss.Name == solutionName))
             {
                 throw new Exception("方案名重复!");
             }
             //保存方案名
             SortingSolutions solution = new SortingSolutions();
             solution.Id   = SolutionId;
             solution.Name = solutionName;
             db.SortingSolutions.Add(solution);
             ////方案另存为
             //_solutionCountryList.ForEach(sc =>
             //{
             //    sc.SortingSolutionId = SolutionId;
             //    sc.Id = Guid.NewGuid().ToString();
             //});
             //db.SolutionCountry.AddRange(_solutionCountryList);
             //_solutionPostTypeList.ForEach(sc =>
             //{
             //    sc.SortingSolutionId = SolutionId;
             //    sc.Id = Guid.NewGuid().ToString();
             //});
             //db.SolutionPostType.AddRange(_solutionPostTypeList);
             db.SaveChanges();
         }
         _solutionCountryList.Clear();
         _solutionPostTypeList.Clear();
         return(SolutionId);
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #12
0
 /// <summary>
 /// 创建装箱记录(多格口打印一个PKG标签)
 /// </summary>
 /// <param name="latticeIdArray">格口号</param>
 /// <param name="userInfo">用户信息</param>
 /// <param name="criticalWeight">临界重量</param>
 /// <param name="boxWeight">箱子重量</param>
 /// <returns></returns>
 internal override PackingLog CreatePackingLog(string[] latticeIdArray, UserInfo userInfo, decimal criticalWeight, decimal boxWeight, out List <LatticeOrdersCache> latticeInfo, int operationType = 3)
 {
     using (var db = new OrderSortingDBEntities())
     {
         //根据格口号获取格口信息
         var LatticesettingIds = db.LatticeSetting.Where(ls => latticeIdArray.Contains(ls.LatticeId)).Select(ls => ls.ID);
         if (LatticesettingIds.Count() != latticeIdArray.Where(o => !string.IsNullOrWhiteSpace(o)).Count())
         {
             throw new Exception("输入的格口号有误,注意:多个格口间需使用回车键分隔!");
         }
         //根据格口信息获取相关的快件信息
         var logCache = db.LatticeOrdersCache.Where(o => LatticesettingIds.Contains(o.LatticesettingId));
         if (logCache == null || logCache.Count() < 1)
         {
             throw new Exception("没有分拣记录,装箱记录生成失败!");
         }
         var logList = logCache.ToList();
         latticeInfo = logList;
         //装箱记录
         PackingLog pkgLog = NewPackingLog(null, userInfo, operationType, logList, boxWeight);
         if (pkgLog.Weight > criticalWeight)
         {
             throw new Exception(string.Format("总重量{0}Kg,临界重量{1}Kg,装箱记录生成失败!", pkgLog.Weight, criticalWeight));
         }
         db.PackingLog.Add(pkgLog);
         db.LatticeOrdersCache.RemoveRange(logList);
         //把装箱信息上传到物流系统
         var response = API_Helper.BatchOutboundBySingleFlyt(userInfo, pkgLog, logList);
         if (response != null && !response.Success && !string.IsNullOrWhiteSpace(response.Message))
         {
             throw new Exception(response.Message);
         }
         db.SaveChanges();
         return(pkgLog);
     }
 }